我一直在尝试在我的项目中实现datagrid,问题是数据网格没有显示数据,数据在那里但是不可见,我试图检查html页面并添加一些高度和宽度数据网格父div中的内部div完全显示数据,我可以使用css及其完成,但是如果有另一个解决方案或者换句话说有人知道datagrid有什么问题吗?
public class DataGridTest implements EntryPoint, ClickHandler {
private ListDataProvider<TestObject> listProvider;
public void onModuleLoad() {
List<TestObject> list = new ArrayList<TestObject>();
list.add(new TestObject("Amer",22));
list.add(new TestObject("Essa",25));
list.add(new TestObject("Asem",29));
DataGrid<TestObject> dataGrid = new DataGrid<TestObject>();
dataGrid.setStyleName("dataGridTest");
TextColumn<TestObject> nameColumn = new TextColumn<TestObject>(){
@Override
public String getValue(TestObject object) {
return object.getName();
}
};
dataGrid.addColumn(nameColumn,"Name");
TextColumn<TestObject> ageColumn = new TextColumn<TestObject>(){
@Override
public String getValue(TestObject object) {
return object.getAge()+"";
}
};
dataGrid.addColumn(ageColumn,"Age");
listProvider = new ListDataProvider<TestObject>();
listProvider.addDataDisplay(dataGrid);
listProvider.setList(list);
LayoutPanel layoutPanel = new LayoutPanel();
layoutPanel.add(dataGrid);
RootPanel.get().add(layoutPanel);
layoutPanel.forceLayout();
Button btn = new Button("lala");
btn.getElement().getStyle().setPosition(Position.ABSOLUTE);
RootPanel.get().add(btn);
btn.addClickHandler(this);
}
public class TestObject {
private String name;
private int age;
public TestObject(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
@Override
public void onClick(ClickEvent event) {
listProvider.getList().add(new TestObject("lala", 10));
}
}
答案 0 :(得分:1)
您正在混合使用RootPanel
和LayoutPanel
,这是行不通的
您必须改为使用RootLayoutPanel
DataGrid
必须放在LayoutPanel
中,且RootLayoutPanel
必须有一个完整的链。
或者,您必须在DataGrid
的父容器上指定显式尺寸(高度,宽度),或使用CellTable
代替。
RootLayoutPanel.get().add(layoutPanel)
应该解决您的问题。