java - 无法显示 GWT DataGrid

标签 java gwt datagrid

因此,我在使用 GWT 创建 Datagrid 时遇到了麻烦。我已经根据 GWT 的文档创建了我的表,并且我已经添加了我的数据,但是我根本无法显示它或数据网格本身。我错过了什么?我觉得我一直在为此撕毁我的头发。我觉得调用 aysnc 电话可能是个问题,但我没有收到任何错误。当我编译并执行我的这部分代码时,屏幕上没有任何显示,并且数据网格应该位于停靠栏上的区域是空的。我是否忘记了一些微不足道的事情?

        static int orderID = 1001;
        private static List<OrderLine> orderLineList = new ArrayList<OrderLine>();

        final DataGrid<OrderLine> dgOrder = new DataGrid<OrderLine>();
        dgOrder.setWidth("100%");                   

        //set columns
        TextColumn<OrderLine> orderLineIdColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return Integer.toString(object.getOrderLineID());
            }
        };
        dgOrder.addColumn(orderLineIdColumn, "OrderLine ID");

        TextColumn<OrderLine> productColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return getProductName(object.getProductNumber());
            }
        };
        dgOrder.addColumn(productColumn, "Product");

        TextColumn<OrderLine> quantityColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return Integer.toString(object.getQuantity());
            }
        };
        dgOrder.addColumn(quantityColumn, "Quantity");   

        // add data to datagrid
        Ioma.dataservice.getOrderLines(orderID, new AsyncCallback<ArrayList<OrderLine>>(){
            @Override
            public void onFailure(Throwable caught) {// TODO Auto-generated method stub
                System.out.println("error in retrieving GP.getOrderLines" + caught.toString());
            }
            @Override
            public void onSuccess(ArrayList<OrderLine> result) {
                // TODO Auto-generated method stub
               //yes i realize I could also set it to "result" but I use the result in other places as well, I have also tried setting it to result with no success
                orderLineList = result;
                dgOrder.setRowData(0, orderLineList);
            }
        });

        //add datagrid to the dock 
        dock.add(dgOrder, DockPanel.EAST);

        //add dock to mainPanel
        return dock;

最佳答案

当您使用 DataGrid你需要给它一个明确的大小。对于 CellTable你不需要,所以这就是它起作用的原因。

当您使用 DataGrid 时,它在那里,但高度和宽度均为 0。所以你要么需要显式设置大小:

DataGrid<OrderLine> grid = new DataGrid<OrderLine>;
grid.setWidth("500px");
grid.setHeight("600px");
dock.add(dgOrder, DockPanel.EAST);

或者您可以将网格放在 ProvidesResize 中小部件。所以在你的情况下,我相信你可以让它与 DockLayoutPanel 一起工作。而不是 DockPanel这就是您似乎正在使用的。

关于java - 无法显示 GWT DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224794/

相关文章:

css - 如何在 GWT 中使用 CSS 格式化 ScrollPanel?

wpf - 以编程方式将 Datagrid 列置于 View 中(水平滚动)

reactjs - 如何在material-ui datagrid中实现搜索?

java - 代理服务器的 Axis2 NTLM 身份验证

Java 线程 - 线程局部变量

java - 在 datasnapshot 中设置 Boolean 设置为 true 后返回 null

gwt - 使用 UiBinder 定义 GWT CellTable

java - 如何使用 EXT-GWT 组合框

css - 为什么 Bootstrap col-xs- "Horizontal at all times"?

java - 使用 Graphics2D 翻转图像