【问题标题】:GWT Data grid does not show dataGWT 数据网格不显示数据
【发布时间】:2014-06-29 05:22:34
【问题描述】:

我一直在尝试在我的项目中实现数据网格,问题是数据网格不显示数据,数据在那里但不可见,我试图检查 html 页面并添加一些高度和宽度datagrid 父 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));

}

}

【问题讨论】:

  • 检查时 DataGrid 的高度是多少?

标签: gwt datagrid


【解决方案1】:

您正在混合 RootPanel 和 LayoutPanel,这不起作用。
您必须改用 RootLayoutPanel。
DataGrid 必须放在LayoutPanel 中,并且必须有一条完整的链到RootLayoutPanel。

或者,您必须在DataGrid 的父容器上指定明确的尺寸(高度、宽度),或者改用CellTable。

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

【讨论】:

  • 感谢 RootLayoutPanel 解决方案完美运行,但我不喜欢它,因为我有一系列小部件可以到达根面板,因此很难使用此解决方案,celltable 解决方案不起作用,因为我已经使用它并且我想更改它,我试图为网格的父级指定尺寸但没有工作。
  • 您可以尝试使用ResizeLayoutPanel。这个LayoutPanel 不需要完整的链,并且可以调整其子元素的大小。但是,我强烈建议您将RootLayoutPanel 与LayoutPanels 一起用于您的应用程序结构。之后您可以在其中使用普通的FlowPanel、HTMLPanel 和DIVs,如果您需要调整大小,您还可以在FlowPanel 或DIV 中放置ResizeLayoutPanel。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多