gwt - 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();
}
解决方案
实例化 2 个 DataGrid 是我的错。
推荐阅读
- javascript - 是否可以在运行时在 Node.js 中生成带有函数的对象?
- reactjs - 使用 componentDidUpdate 在反应中更新状态
- python - 使用线性回归的时间序列
- java - 休眠中事务中的延迟更新创建问题
- python - 将键多值字符串转换为键值对
- windows - 错误处理程序未捕获 PowerShell 中的错误
- javascript - 如何防止 ajax 表单提交写在任何地方?
- c# - 添加到列表返回 null
- javascript - 使用 querySelector 时的奇怪行为
- javascript - 使用 Bash heredoc 在 Bash 终端中运行 ES6 代码