を変更するにはDataSource
、次のメソッドGrid
を使用する必要があります。setDataSource
grid.setDataSource(new_datasource);
タブの変更を検出するには、ハンドラーをactivate
イベントにバインドする必要がありますTabStrip
したがって、次のようになります。
$("#tabs").kendoTabStrip({
activate: function (e) {
// Compute new DataSource for this tab
var aux = ...
$("#grid").data("kendoGrid").setDataSource(aux);
}
}).data("kendoTabStrip");
次の JSFiddle では、タブの外側にあるグリッドを切り替える方法を示します: http://jsfiddle.net/OnaBai/6Cuyr/
しかし、グリッドがタブであるかどうかという質問があります-元の質問では明確ではありません-。実際にタブにある場合は、タブと同じ数の異なるグリッドを使用することをお勧めします。データソースを切り替える必要はありません (新しいデータソースの設定には常に価格が関連付けられています)。次のようなことができます。
HTML:
<div id="tabs" data-role="tabstrip">
<ul>
<li>ds1</li>
<li>ds2</li>
<li>ds3</li>
</ul>
<div>
<div data-role="grid" data-bind="source: ds1"></div>
</div>
<div>
<div data-role="grid" data-bind="source: ds2"></div>
</div>
<div>
<div data-role="grid" data-bind="source: ds3"></div>
</div>
</div>
つまり、 のコンテンツが であることを定義し、TabStrip
そのGrid
タブ ( ) のデータソースを含むモデルのメンバーにバインドしますdata-bind="source: ds1">
。
その場合、JavaScript は次のようになります。
var mvvm = kendo.observable({
ds1 : new kendo.data.DataSource({
data : ...
}),
ds2: new kendo.data.DataSource({
data : ...
}),
ds3 : new kendo.data.DataSource({
data : ...
})
});
// Bind TabStrip to our observable object mvvm
kendo.bind($("#tabs"), mvvm);
次の JSFiddle で確認できます: http://jsfiddle.net/OnaBai/6Cuyr/3/