2016-06-30 10 views
1

私はオブジェクトのqx.data.Array変数コンシューマを持っています。どのように配列をテーブルに接続するのですか? 私は以下のコードでマッピングの種類が必要です。テーブルの行は空ですが、その数は正しいです。qx.ui.table.Table経由でqx.data.Arrayを制御する方法

var rowData = theStore.getModel(); //it is qx.data.Array type 
var tableModel = new qx.ui.table.model.Simple(); 
tableModel.setData(rowData); 
var table = new qx.ui.table.Table(tableModel); 

おかげで、 カロル

答えて

1

データモデルを見てから:

map array
あなたがオブジェクト/マップの配列を持っています。 この場合、tableModel.setData(rowData)の代わりに tableModel.setDataAsMapArray(rowData) http://demo.qooxdoo.org/current/apiviewer/#qx.ui.table.model.Simple~setDataAsMapArray
を使用できます。

ただし、qooxdooがデータから列へのマッピングを確立できるように、モデルの列IDを最初に設定する必要があります。例: tableModel.setColumns(Object.keys(rowData[0]))は役に立ちます。

+0

ありがとうございましたadrelino。問題を解決し、toArray()関数(var rowData = theStore.getModel()。toArray();)を追加する必要がありました。行を編集して変更すると、その変更はStore.getModel()に反映されません。ソース行(theStore.getModel())をテーブルにコピーしないようにする方法ですか? –

+0

theStore <--> tableModelの間にデータバインディングがないので、手動で行う必要があります。 1. qooxdooのテーブル+ tableModelを使用して行を編集しますか? 2.Storeのソースデータを編集しますか? < - tableModel.getDataAsMapArray()を呼び出すと、変更されたデータをqooxdooテーブルから取得する必要があります。 - > 2番目のケースでは、setData(rowData)を再度呼び出して古いデータを上書きするだけです – adrelino

1

qx.ui.table.Tableはネイティブでバインディングを処理しないため、モデル(ストア)をテーブルにバインドしたり、テーブル内の変更を手動で同期させずにストアに反映させることはできません。

独自のtableModel(qx.ui.table.ITableModelインターフェイスを実装する)を作成するのは簡単ですが、カスタムテーブルモデルを作成してから、カスタムモデルのモデルにテーブルをバインドすることができます。セルとストアモデル。

関連する問題