【问题标题】:GWT Datagrid does not show data , but contains itGWT Datagrid 不显示数据,但包含它
【发布时间】:2012-08-29 07:47:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: gwt datagrid tabpanel celltable


    【解决方案1】:

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

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

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

    也可以参考这个 GWT: DataGrid - set height 100% not rendering properly

    【讨论】:

    • 首先我用 RootPanel.get("...").add(tabPanel);页面的标签面板。应该显示数据网格的选项卡是一个水平面板。然后我创建我的数据网格,将其添加到 ResizeLayoutPanel,设置大小并将其添加到水平面板。数据网格的标题在那里,但它保持为空。如果我的表格类型是 celltable,仍然可以使用。
    • 您正在使用未实现 ProvidesResize 接口的 dataGrid、tabPanel 和 RootPanel。使一个扩展 simpleLayoutPaneland 的类具有 DataGrid。使用 TabLayoutPanel 和 RootLayoutPanel 而不是 tabPanel 和 RootPanel。使用布局面板时,切勿将水平或垂直面板用作 dataGrid 的容器。你可以看看gwt.google.com/samples/Showcase/Showcase.html#!CwDataGrid的GWT展示源代码我的意思是源代码,即CwDataGrid.java、ContentWidget.java等。
    • 实际上有两个 gwt 接口声明了这种相互依赖关系:ProvidesResize 和 RequiresResize! google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/…
    【解决方案2】:

    这是我的 2 美分。

    当涉及在正确形成的“LayoutPanel 或实现 ProvidesResize”树结构的面板之外呈现 DataGrid 时,我发现我始终需要牢记以下几点:

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

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

    我希望这会有所帮助。

    【讨论】:

    • 关于2:IE10没有出现这种行为,不需要重绘。
    • @Lucas 我正在努力使用 DataGrid 显示数据。在明确设置 dataGrid.setHeight("123px") 后,它起作用了。你能告诉我为什么这个数字是 123px 吗?有什么意义吗?因为我尝试了多种设置高度和宽度的方法,但似乎没有任何效果。
    • Madhu:没有意义,只是一个样本值。
    【解决方案3】:

    就我而言,这是由以下原因引起的: DataGrid rows not visible in second tab of TabLayoutPanel

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2019-11-09
      相关资源
      最近更新 更多