1

最初に私の全体的な目標を述べることから始めましょう。次に、具体的な質問をします。私の目標は、CRUD 機能のために、SPA (Durandal、Knockout、Breeze など) で使用するグリッド コントロールを見つけることです。Knockout/Breeze とうまく連携し、必要な機能を提供してくれるグリッド (Kendo、JQGrid、JQXGrid、IgniteUI など) の高低を調べましたが、見つからないようです。これまでで最も近いのは Ignite UI の iqGrid です。

私の具体的な質問:

Breeze を使用して WebAPI にクエリを実行し、結果を正しく取得できます。観察可能な配列を手動で使用して結果をグリッドにバインドし、問題なく表示することもできます。手動でバインドするとは、各プロパティを設定して配列にプッシュする必要があるということです。

return this.manager.executeQuery(query)
    .then(function (data) {
        data.results.forEach(function (item) {
            me.data.push({
                Id: item.Id,
                FirstName: item.FirstName,
                LastName: item.LastName,
                ProductName: item.ProductName,
                Quantity: item.Quantity,
                Price: item.Price,
                Created: item.Created,
                Enabled: item.Enabled
            });
        });
    })

'data' プロパティは Knockout Observable Array です。

ただし、これは私の理想的なソリューションではありません。テーブルにフィールドを追加する場合、それはコードで追加する必要がある 1 つの場所にすぎません。私の理想的な解決策は、Breeze エンティティを Knockout Observable Array に自動的にマップし、グリッドに正しく表示することです。

たとえば、テーブルを使用して手動で作成された単純なグリッドで機能する、これを試しました。

return this.manager.executeQuery(query)
    .then(function (data) {
        me.data(data.results);
    })

しかし、これは igGrid にデータを表示しません。

私もこれを試しました:

me.data = ko.toJS(data.results);

どちらも機能しません。

だから私の質問は、これを達成する方法はありますか? さらに、既存のツールを使用して CRUD アプリを作成するためのより良い方法はありますか? つまり、最初から書かずに?

ありがとう

4

1 に答える 1

0

これを試して:

return this.manager.executeQuery(query)
.then(function (data) {
    data.results.forEach(function (item) {
        me.data.push(item);
    });
})
于 2014-06-13T14:30:53.767 に答える