GWT的数据表格没有显示数据,但是数据确实存在。

11

我试图将一个cellTable转换成datagrid,因为我想要添加搜索处理程序,所以我需要固定的列标题。目前,我扩展了celltable/datagrid类,并将小部件放入simplelayoutpanel中,然后将其添加到我的tabpanel中。

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

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

3个回答

8

以下是我的意见。

当在一个没有正确形成“LayoutPanel或实现ProvidesResize的面板”树结构之外渲染DataGrid时,我发现我总是需要记住以下几点:

  1. 这个问题所解释的那样,height DataGrid属性需要显式值,例如“123px”。如果没有这个值,DataGrid不会显示其数据行(即使它们在DOM中)。

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

希望这对你有所帮助。


大约2:IE10不会表现出这种行为,无需重新绘制。 - Spiff
@Lucas 我一直在努力使用DataGrid来显示数据。在明确设置了dataGrid.setHeight("123px")之后,它终于起作用了。你能告诉我为什么是123px吗?这个数字有什么特殊意义吗?因为我尝试了多种设置高度和宽度的方法,但似乎都不起作用。 - Madhu CM
Madhu:没有实际意义,只是一个示例值。 - Lucas A.

8

DataGrid需要放在一个实现了ProvidesResize接口的LayoutPanel或Panel中才能可见。ScrollPanel实现了该接口。

此外,从DataGrid到根元素/面板的这条LayoutPanel链必须是连续的。在您的面板层次结构中似乎是这种情况。

最后,您必须使用RootLayoutPanel而不是RootPanel来添加您的LayoutPanel。所以您确定将SimpleLayoutPanel添加到RootLayoutPanel中了吗?

另请参见: GWT:DataGrid - 设置高度为100%无法正确呈现


首先,我使用RootPanel.get("...").add(tabPanel)将一个tabpanel添加到页面中。应该显示datagrid的选项卡是一个HorizontalPanel。然后,我创建了我的datagrid,将其添加到ResizeLayoutPanel中,设置大小并将其添加到水平面板中。虽然datagrid的标题已经出现,但它仍然是空的。如果我的表格类型是celltable,则仍然可以正常工作。 - Akkusativobjekt
您正在使用未实现ProvidesResize接口的dataGrid、tabPanel和RootPanel。创建一个继承simpleLayoutPanel并具有DataGrid的类。在使用布局面板时,请使用TabLayoutPanel和RootLayoutPanel而不是tabPanel和RootPanel。当您使用布局面板处理数据网格时,永远不要使用水平或垂直面板作为容器。您可以查看http://gwt.google.com/samples/Showcase/Showcase.html#!CwDataGrid的GWT展示源代码,例如CwDataGrid.java、ContentWidget.java等。 - Abhijith Nagaraja
实际上有两个GWT接口声明了这种相互依赖关系:ProvidesResize和RequiresResize!http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/RequiresResize.html - user1050755

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接