GWT数据网格不显示数据

时间:2014-06-29 05:22:34

标签: gwt datagrid

我一直在尝试在我的项目中实现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));

}

}

1 个答案:

答案 0 :(得分:1)

您正在混合使用RootPanelLayoutPanel,这是行不通的 您必须改为使用RootLayoutPanel DataGrid必须放在LayoutPanel中,且RootLayoutPanel必须有一个完整的链。

或者,您必须在DataGrid的父容器上指定显式尺寸(高度,宽度),或使用CellTable代替。

RootLayoutPanel.get().add(layoutPanel)应该解决您的问题。