【问题标题】:GWT DataGrid not shownGWT DataGrid 未显示
【发布时间】:2014-10-01 09:02:09
【问题描述】:

我正在尝试将我的数据小部件从CellTable 更新为DataGrid,我基本上认为我在网上将更改从@UiField CellTable<T> 更改为@UiField DataGrid<T>,但事实并非如此。

private void init() {
        sortHandler = new ListHandler<GWTUser>(getUsers());

        dataGrid.setWidth("100%");
        dataGrid.setHeight("100%");
        dataGrid.setAutoHeaderRefreshDisabled(true);
        dataGrid.setEmptyTableWidget(emptyDb);
        dataGrid.addColumnSortHandler(sortHandler);
        dataGrid.setVisibleRangeAndClearData(dataGrid.getVisibleRange(), true);

        dataGrid.setRowCount(1, true);
        dataGrid.clearTableWidth();
        dataGrid.redraw();

        // Setup Cell Table.
        initCellTable();

        // Connect the table to the data provider.
        dataProvider.addDataDisplay(dataGrid);

    }

    private void initCellTable() {

        // userId Column
        TextColumn<GWTUser> userIdColumn = new TextColumn<GWTUser>() {

            @Override
            public String getValue(GWTUser object) {
                return object.getUserId();
            }

        };
        dataGrid.addColumn(userIdColumn, Lang.LABEL_USER_USERID);

        dataGrid.addColumnSortHandler(sortHandler);
        dataGrid.getColumnSortList().push(userIdColumn);
        dataGrid.getColumnSortList().push(userIdColumn);

    }

    @Override
    public void setUserList(List<GWTUser> users) {

            setUsers(users);

            dataGrid.setRowCount(getUsers().size(), true);
            dataGrid.setRowData(0, getUsers());
            dataGrid.setPageSize(getUsers().size());
            dataGrid.setVisibleRange(new Range(0,dataGrid.getRowCount()));
            dataGrid.redraw();

            sortHandler.setList(getUsers());


    }

uiBinder:

    <g:VerticalPanel>                               
        <g:ScrollPanel ui:field="listScrollPanel">
            <c:DataGrid styleName= ui:field='dataGrid' width="100%" height="98%"/>
        </g:ScrollPanel>

        <g:HorizontalPanel>
            <g:Button ui:field="createButton">New</g:Button>
            <g:Button ui:field="refreshButton">Refresh</g:Button>
            <g:Button ui:field="removeSelectedButton">Delete Selection</g:Button>
        </g:HorizontalPanel>

    </g:VerticalPanel>

当我使用 chrome 开发工具更改我的 DataGrid 应该位于的区域时,带有表格的数据在那里但未显示。

作为基本信息:init 由构造函数调用,setUserList 在我从休息服务获取数据时在我的活动中调用。感谢您的帮助。

【问题讨论】:

  • 您必须将高度设置为明确的值,例如500pxRelated.
  • 工作得很好谢谢,但现在我必须重新设计一切以使其再次成为动态......
  • 太好了,我已经添加了答案。

标签: java gwt datagrid uibinder


【解决方案1】:

DataGrid 需要明确设置的高度。这意味着您不能使用百分比(例如100%),而必须使用500px 之类的东西。

这是一个相关的问题:

GWT DataGrid automatic height

【讨论】:

  • 我在所有东西周围都有一个ResizeLayoutPanel,我正在尝试通过void onListContentResize(ResizeEvent event) { dataGrid.setHeight(Integer.toString(event.getHeight())); listScrollPanel.setPixelSize(event.getWidth(), event.getHeight()-80); } is this now even possible with a CellTable 调整它的大小,它起作用了。
  • @vicR 试试dataGrid.setHeight(Integer.toString(event.getHeight()) + "px");
  • 身高变化后是否需要致电redraw()?但它不会花费很多计算时间吗?
  • 哦。对不起我的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
相关资源
最近更新 更多