質問

この質問は、この記事昨日掲示したテレリックのフォーラムで。

私は階層的なDataSourceを備えたツリービューを持っています、そして私の質問は簡単です:transport.read関数の現在のdataItemにアクセスできますか?

例えば、このコードを検討してください。

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            // Here i'll prepare my url to be called
            return "my/controller/" + dataItem.Id;
        }
    }
});
.

READ関数内の現在の展開ノードのDataItemのプロパティにアクセスしたい。これは可能ですか?

多くの方法を試してみましたが、その機能内の範囲は私にその外で何もしないことを与えます。

更新

@onabaiの提案は、次のモデルを考えると、Valueプロパティで働いた。

{
    id: "Value",
    hasChildren: "HasChildren"
}; 
.

しかし、私はIdだけでdataItemの全体にアクセスできるようになりたいです。モデルにDataItemのプロパティを追加しようとしましたが、それはうまくいかない:

{
    id: "Value",
    hasChildren: "HasChildren",
    fields: {
        ParentId: { type: "string" }
    }
}; 
.

ParentIdは、resquestとそれがdataItemでのアクセシブルからのものですが、options関数内のreadでは使用されません。それをするもう一つの方法がありますか?

更新2

これを行うことのためのトリッキーな方法は、モデルのIDをuidに設定することによって達成することができます:

{
    id: "uid"
}
.

関数はUIDを受け取り、次にあなたはそれをデータソースから取得することができます。 dataSource.getByUid()

役に立ちましたか?

解決

Idがモデルに定義されていると仮定すると、次のことが必要です。

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            return "my/controller/" + options.Id;
        }
    }
});
.

ここでの例を参照してください。 http://jsfiddle.net/onabai/me4zz/2/<

edit :フルモデルにアクセスする必要がある場合は、idを既知の場合、データソースでidメソッドを使用して項目を取得します。

例:

var ds = new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            if (options.Id) {
                var item = ds.get(options.Id);
                // Do whatever else you need with Item
            }
            return "my/controller/" + options.Id;
        }
    }
});
.

修正JSFIDDLE http://jsfiddle.net/onabai/me4zz/3/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top