我正在尝试将cellTable
转换为datagrid
,因为我想稍后添加搜索处理程序,因此我需要修复列标题。目前,我扩展了celltable
/ datagrid
类,并将小部件放入simplelayoutpanel
并将其添加到我的tabpanel
。
如果我使用celltable
,一切正常,数据会显示出来。如果我将类的类型更改为datagrid
,则数据有时会显示(列名始终存在)。要在表格中添加内容,我使用了setRowData
或dataProvider
。如果我设置断点以延迟加载表内容,则表有时会包含数据。如果我稍后调用表的重绘方法,该表将显示正确的信息。但该表应自动加载内容。在我项目的其他“位置”,我也使用了datagrid,它在Dialogboxes
中工作。
我认为项目的绘制一定存在错误,因为如果我在表格上调用.getRowCount
或已弃用的.getDisplayedItems
,则会返回正确的项目数量桌子。此外,如果我向表中添加选择模型并选择项目,则该项目包含有效数据。
答案 0 :(得分:8)
DataGrid需要放在LayoutPanel或Panel中,以实现ProvideResize接口的可见性。 ScrollPanel实现了该接口。
此外,从DataGrid到根元素/面板的这一系列LayoutPanel必须不间断。在您的面板层次结构中似乎就是这种情况。
最后,您必须使用RootLayoutPanel而不是RootPanel来添加LayoutPanel。 那么你是否确保将SimpleLayoutPanel添加到RootLayoutPanel?
另请参阅此内容 GWT: DataGrid - set height 100% not rendering properly
答案 1 :(得分:8)
这是我的2美分。
当谈到在正确形成的“LayoutPanel或Panel实现ProvideResize”树结构之外渲染DataGrid时,我发现我总是需要记住以下几点:
正如this question所解释的,高度DataGrid属性需要一个显式值,例如“123px”。如果没有这个,DataGrid不会显示其数据行(即使它们在DOM中)。
如果将DataGrid放在未聚焦的DecorativeTabPanel选项卡中,则需要在此类选项卡获得焦点时调用DataGrid.redraw()。同样,如果没有这个,DataGrid不会显示其数据行(即使它们在DOM中)。
我希望这会有所帮助。
答案 2 :(得分:3)
在我的情况下,它是由此引起的: DataGrid rows not visible in second tab of TabLayoutPanel