您需要在数据中有一个共同的 id 或字段,您可以使用它来唯一标识其他数据源中的对象,因为 kendo 生成的 UID 在两个不同的 DataSource 实例中不会相同。
大多数情况下,您在绑定到网格的模型中定义 id,您可以使用它来快速从数据源中提取项目
change: function (e) {
var selectedRows = this.select();
var dataItem = this.dataItem(selectedRows[0]);
var otherItem = otherGrid.dataSource.get(dataItem.id) // will get
}
如果您没有在模型中指定公共 ID 字段,但知道如何查找项目,您可以遍历数据源查找它
var selectedRows = this.select();
var dataItem = this.dataItem(selectedRows[0]);
var data = otherGrid.dataSource.view();
var otherItem;
for ( var i = 0; i < data.length; i++ ){
if( data[i].myCommonField === dataItem.myCommonField ) {
otherItem = data[i];
break;
}
}
更新:
要选择另一个网格中的项目,您需要执行以下操作:
var elements = otherGrid.items(),
element;
element = elements.filter("[data-uid='" + otherItem.uid + "']")
otherGrid.select(element) // to select just the one item
//OR
otherGrid.select( otherGrid.select().add(element) ) // to add the item to the current selection
我你提供的小提琴使用了一个非常旧版本的剑道网格,这不起作用......我刚刚意识到。你卡在2011版本上吗?我可能至少在理论上可以得到一些工作,但上述内容将在较新的版本中工作
本质上,您需要将您拥有的项目与 DOM 元素相匹配,在以后的版本中,您可以使用 UID,因为 dom 元素都在它们“data-uid”上得到它,看起来如果你在id
你的model: { }
def 中你可以得到 tr 元素拥有data-id
它,您可以使用 jquery 来选择正确的选择。我使用items()1 method which also doesn't seem to exist on the early version but you can use
grid2.table.find("tr[data-id=]")` 代替我相信