首页 > 解决方案 > DataGrid 什么都不显示

问题描述

我正在将 DataGrid 添加到 FlexTable 中的 SimpleLayoutPanel。我无法显示任何数据,甚至无法显示标题。每当我在 DataGrid 中调用 setHeight() 之类的方法时,我的整个 FlexTable 都会消失,并且我有一个空白页。

我已经尝试了没有 SimpleLayoutPanel 的 DataGrid (我的代码中的 userPanel )并且没有区别。我已经用 CellTable 和 ScrollPanel 进行了尝试,并得到了相同的结果。

public AdminViewImpl() {

    SimpleLayoutPanel contentPanel = new SimpleLayoutPanel();
    initWidget(contentPanel);
    contentPanel.setWidth("100%");
    contentPanel.setHeight("100%");

    final FlexTable adminTable = new FlexTable();
   FlexTable.FlexCellFormatter cellFormatter = adminTable.getFlexCellFormatter();
    adminTable.addStyleName("flexTable");
    adminTable.setWidth("99%");
    adminTable.setCellSpacing(5);
    adminTable.setCellPadding(3);

    cellFormatter.setHorizontalAlignment(0,0,HasHorizontalAlignment.ALIGN_CENTER);
    cellFormatter.setColSpan(0,1,2);
    adminTable.setHTML(0,0,"<h1> GRAPL AUTOMATION</h1>");
    contentPanel.add(adminTable);

    VerticalPanel buttonPanel = new VerticalPanel();

    buttonPanel.getElement().getStyle().setBorderStyle(Style.BorderStyle.SOLID);
    cellFormatter.setVerticalAlignment(0,1,HasVerticalAlignment.ALIGN_MIDDLE);
    cellFormatter.setHorizontalAlignment(0,1,HasHorizontalAlignment.ALIGN_CENTER);
      addButton = new Button("Add User");

    addButton.setStyleName("addButton");
    buttonPanel.add(addButton);


    adminTable.setWidget(0,1,buttonPanel);


    userPanel = new SimpleLayoutPanel();
    userPanel.setSize("1000px","200px");
    userPanel.getElement().getStyle().setBorderStyle(Style.BorderStyle.SOLID);
    cellFormatter.setVerticalAlignment(1,0,HasVerticalAlignment.ALIGN_MIDDLE);
    cellFormatter.setHorizontalAlignment(1,0,HasHorizontalAlignment.ALIGN_CENTER);
    cellFormatter.setColSpan(1,0,3);
    cellFormatter.setHeight(1,0,"200px");
    //userTable.setHeight("10px");
    //userTable.setAutoHeaderRefreshDisabled(true);
    // Set the message to display when the table is empty.
   // userTable.setEmptyTableWidget(new Label("Grid has no Data"));
    userPanel.add(userTable);


    adminTable.setWidget(1,0,userPanel);
   //userTable.redraw();
}

数据从演示者加载到此方法中:

 @Override
 public void setTableData(List<User> userDetails) {
    userTable = new DataGrid<User>();

    TextColumn<User> columnUserId= new TextColumn<User>() {
        @Override
        public String getValue(User user) {
            return user.getUser_id();
        }
    };

    userTable.addColumn(columnUserId,"UserID");
    userTable.setColumnWidth(columnUserId,20,Style.Unit.PX);

    TextColumn<User> columnName = new TextColumn<User>() {
        @Override
        public String getValue(User user) {
            return user.getName();
        }
    };

    userTable.addColumn(columnName,"Name");
    //userTable.setColumnWidth(columnName,60,Style.Unit.PX);
    TextColumn<User> columnRole = new TextColumn<User>() {
        @Override
        public String getValue(User user) {
            return user.getRole();
        }
    };

    userTable.addColumn(columnRole,"Role");
    TextColumn<User> columnIsActive = new TextColumn<User>() {
        @Override
        public String getValue(User user) {
            return user.getIsActive();
        }
    };

    userTable.addColumn(columnIsActive,"Active");
    TextColumn<User> columnProduct = new TextColumn<User>() {
        @Override
        public String getValue(User user) {
            return user.getProduct();
        }
    };

    userTable.addColumn(columnProduct, "Product");
    userTable.setSelectionModel(selectionModel);


    userTable.setRowCount(userDetails.size());
    userTable.setRowData(0,userDetails);
    //userTable.redraw();



}

标签: gwt

解决方案


实例化 2 个 DataGrid 是我的错。


推荐阅读