2011-10-24 33 views
8

Próbuję wstawić datagrid gwt w mojej aplikacji. Jeśli ustawię wysokość statyczną (500px) wszystko działa dobrze. Ale chcę, aby dataGrid automatycznie dostosować się do rozmiaru ekranu. Z wysokością 100% otrzymuję pusty ekran. Próbowałem również umieścić datagrid w resizeLayoutPanel z tymi samymi wynikami.GWT DataGrid automatyczna wysokość

Jakieś wskazówki?

Odpowiedz

19

Wszystkie RequiresResize widgetów należy wyraźne wielkości, lub mogą być dodane do ProvidesResize widgetów (do RootLayoutPanel lub A ProvidesResize widget z wyraźną rozmiarów, jedynym wyjątkiem jest ResizeLayoutPanel który nie realizuje ProvidesResize ponieważ nie mógłby honoruj ​​kontrakt ze swoimi widżetami nagłówka i stopki, ale zdecydowanie honoruje go dla widżetu centralnego).

Pytanie brzmi: gdzie dodano swoje DataGrid i/lub ResizeLayoutPanel?

+0

Kluczowym punktem było ... dodanie do widgetów ProvidesResize (do RootLayoutPanel). Panel nadrzędny był HTMLPanel i nie jest widżetem ProvidesResize. – Jose

+3

Powinieneś "zaakceptować" odpowiedź zamiast zmieniać tytuł pytania na "rozwiązany". Zobacz http://stackoverflow.com/faq#howtoask –

3

Thomas Broyer ma rację. Niemniej jednak znalazłem coś interesującego odnośnie DataGrid (nie dzieje się to w CellTable). Jeśli używasz DeckPanel i jeśli tworzysz DataGrid na ukrytym panelu tego DeckPanel, wtedy dane DataGrid nie będą widoczne, jeśli wyświetlisz panel DataGrid. Znalazłem tylko jedno obejście: wywołanie addDataDisplay z DataProvider "po" pokazaniu panelu.

+0

W większości przeglądarek wysokość i szerokość ukrytych elementów div (tzn. Stylów wyświetlania: brak) nie są dostępne do rozmieszczenia reszty strony. Istnieją sposoby na obejście tego, więc myślę, że CellTable zaimplementował go, a DataGrid nie (lub nie mógł, ponieważ jest nieco bardziej skomplikowany). –

+0

Potwierdzono, że ma to również wpływ na TabLayoutPanel, w którym DataGrid nie znajduje się na domyślnej karcie. – hiddenwaffle

Powiązane problemy