为了改变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
是 aGrid
并将其绑定到包含该选项卡 ( 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/