3

そのため、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;
4

3 に答える 3

6

を使用する場合はDataGrid、明示的なサイズを指定する必要があります。あなたがそうする必要がないので、それCellTableがうまくいった理由です。

使用していたときDataGridはありましたが、高さと幅の両方がありました0。したがって、サイズを明示的に設定する必要があります。

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

ProvidesResizeまたは、グリッドをウィジェットに入れることもできます。したがって、あなたの場合、使用しているように見える aDockLayoutPanelではなく、 a で機能させることができると思いDockPanelます。

于 2013-04-26T03:12:55.293 に答える
1

私はsmirliar問題を抱えていました。SimpleLayoutPanel のように、ProvidesResize インターフェイスを実装する Panel にデータグリッドを配置してみてください。また、私の場合、SimpleLayoutPanel のサイズを設定するのに役立ちました。

于 2013-04-26T06:35:54.527 に答える