剣道で生成された UID は 2 つの異なる DataSource インスタンス間で同じにはならないため、他の dataSource 内のオブジェクトを一意に識別するために使用できるデータ内の共通 ID またはフィールドが必要です。
最も一般的には、グリッドにバインドしたモデルで 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年版で立ち往生していますか?おそらく少なくとも理論的には何かを動作させることができますが、上記は新しいバージョンで動作します
id
本質的に、持っているアイテムをDOM要素に一致させる必要があります.dom要素はすべて「data-uid」を取得するため、以降のバージョンではUIDを使用できます。定義にある場合model: { }
、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=]")` を使用します