2016-08-14 21 views
3

Webサイト(Vaadinテーブル)で多くのテーブルを使用していますが、顧客がテーブル内で編集できるようにしておいただけです。さて、私はそれがテーブルで可能であることを知っています(私はすでに働いています)が、私はGridの編集メカニズムのようによく似ています。 Vaadin TableをVaadin Gridに変換する簡単な方法はありますか?グリッドは置換の低下ではないので、変換作業が必要になることはわかっています。人々がそれを見つけたことがどれほど辛いか、またそのような変換を行うためのドキュメンテーションがあるかどうか疑問に思うだけです。VaadinテーブルをVaadinグリッドに変換する

は、ここに私たちの通常のテーブルの使い方です:

public final class ReplenishmentOrderMgmtView extends VerticalLayout implements View { 

    private final Table table; 
    private static final String[] DEFAULT_COLLAPSIBLE = { 
    "contactFirstName", 
    "contactLastName", 
    "supplierName", 
    "carrier", "carrierService", "trackingNumber" 
    }; 
    private static final Object[] VISIBLE_COLUMNS = { 
    "barcode", 
    "contactUserId", 
    "contactFirstName", 
    "contactLastName", 
    "PO", 
    "orderId", 
    "cellId", 
    "cellName", 
    "wmsItem", 
    "description", 
    "supplierId", 
    "supplierName", 
    "statusDesc", 
    "resizedBinQty", 
    "expectedOnDockDate", 
    "shipQuantity", 
    "receivedQty", 
    "lastReceiptDate", 
    "carrier", 
    "carrierService", 
    "trackingNumber", 
    "creationDate" 
    }; 
    private static final String[] COLUMN_NAMES = { 
    "Barcode", 
    "Contact User", 
    "First Name", 
    "Last Name", 
    "PO Number", 
    "Replenishment Order Id", 
    "Cell Id", 
    "Cell Name", 
    "Part", 
    "Description", 
    "Supplier Id", 
    "Supplier Name", 
    "Status", 
    "Resized Bin Qty", 
    "Expected On Dock Date", 
    "Ship Quantity", 
    "Received Qty", 
    "Last Receipt Date", 
    "Carrier", 
    "Carrier Service", 
    "Tracking Number", 
    "Creation Date" 
    }; 


    private Table buildTable() { 
     final Table table = new Table(); 
     table.setSizeFull(); 
     table.addStyleName(ValoTheme.TABLE_BORDERLESS); 
     table.addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); 
     table.addStyleName(ValoTheme.TABLE_COMPACT); 
     table.setSelectable(true); 

     table.setColumnCollapsingAllowed(true); 

     table.setColumnReorderingAllowed(true); 

     updateList(table); 

     table.setSortContainerPropertyId("creationDate"); 
     table.setSortAscending(true); 

     table.setColumnHeaders(COLUMN_NAMES); 

     // Allow dragging items to the reports menu 
//  table.setDragMode(TableDragMode.MULTIROW); 
     table.setMultiSelect(false); 

     table.addActionHandler(new ReplenishmentOrdersActionHandler()); 

     table.addValueChangeListener(event -> this.selectItemFromTable()); 

     table.setImmediate(true); 

     return table; 
    } 
} 

もいくつかは、そこに関わるバインディングがある - 私のデータソースは、Java Beanです。明らかに、私はテーブル自体に影響を与えるコードを含めるだけです。どんなアドバイスや意見も高く評価されます。

答えて

1

Vaadin TableをVaadin Gridに簡単に変換する方法はありますか?あなたは、グリッドのプロパティとグリッドとテーブルとの間の変換を持っている直接的な方法を宣言し、適用する必要が

。両方とも要素が異なり、UIの点でという最小の変更であると交換することはできません。

切り替えは、テーブルのように考慮すべきことがたくさん、

  • データソースを含むのでできるグリッドで正常に動作しますか。
  • テーブルに適用されるスタイルは、グリッドのために動作しません(すなわち VALOのテーマのスタイル、応答スタイル)テーブルの
  • イベントは、グリッドと同じではありません。グリッドが項目のクリックリスナーを持っている間、表には値変更イベントがあります。
  • のように...

ただし、両方の要素に同じコンテナを持つことができます。コンテナのデータソースは、両方の要素で共通に使用できます。グリッドには、テーブルがサポートしている間はコンポーネントが行内でサポートされていないなど、いくつかの制限があります。一方、グリッドは、フリーズコラム、ヘッダ内のサポートコンポーネントなどのいくつかの追加機能で高速化され、最適化されています。同じ方法のテーブルはグリッドの子孫です。グリッドでサポートされているいくつかの機能はありません。

関連する問題