GWT Datagrid不显示数据,但包含数据

时间:2012-08-29 07:47:03

标签: gwt datagrid tabpanel celltable

我正在尝试将cellTable转换为datagrid,因为我想稍后添加搜索处理程序,因此我需要修复列标题。目前,我扩展了celltable / datagrid类,并将小部件放入simplelayoutpanel并将其添加到我的tabpanel

如果我使用celltable,一切正常,数据会显示出来。如果我将类的类型更改为datagrid,则数据有时会显示(列名始终存在)。要在表格中添加内容,我使用了setRowDatadataProvider。如果我设置断点以延迟加载表内容,则表有时会包含数据。如果我稍后调用表的重绘方法,该表将显示正确的信息。但该表应自动加载内容。在我项目的其他“位置”,我也使用了datagrid,它在Dialogboxes中工作。

我认为项目的绘制一定存在错误,因为如果我在表格上调用.getRowCount或已弃用的.getDisplayedItems,则会返回正确的项目数量桌子。此外,如果我向表中添加选择模型并选择项目,则该项目包含有效数据。

3 个答案:

答案 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时,我发现我总是需要记住以下几点:

  1. 正如this question所解释的,高度DataGrid属性需要一个显式值,例如“123px”。如果没有这个,DataGrid不会显示其数据行(即使它们在DOM中)。

  2. 如果将DataGrid放在未聚焦的DecorativeTabPanel选项卡中,则需要在此类选项卡获得焦点时调用DataGrid.redraw()。同样,如果没有这个,DataGrid不会显示其数据行(即使它们在DOM中)。

  3. 我希望这会有所帮助。

答案 2 :(得分:3)

在我的情况下,它是由此引起的: DataGrid rows not visible in second tab of TabLayoutPanel