KendoGridで特定の行を選択する必要がありますが、data-uidではなく(グリッドdataSourceが再度ロードされるとdata-uidが変更されるため)、行itemIDで選択します。投稿を見ましたが、uidで行を選択するだけで、必要なものではありません。実際にはHTML5アプリケーションを再起動する必要があり、グリッドが読み込まれると、特定の項目を選択する必要があります。これは私が見ているものです
デモ:jsfiddle.net/rusev/qvKRk/3/
例えばオブジェクトにはOrderID as ID
、そしてグリッドがロードされるたびに、それは同じになります。uid
とは異なり、OrderID
の代わりにuid
で行を選択する方法を知りたいです。
私がなんとか回避したのは、すべての行を調べて、そのIDがパラメーターと等しい行モデルを確認してから、その行のdata-uidを取得し、data-uidを使用して項目を選択することでした。提案がなかったので、それは私にとってはうまく機能しています、それは今のところより良い答えです。
行itemIDとdata.uidをカムミックスしていると思います。
var grid = $("#Grid").data("kendoGrid");
var dataItem = $("#Grid").data("kendoGrid").dataSource.get(itemID);
var row = $("#Grid").data("kendoGrid").tbody.find("tr[data-uid='" + dataItem.uid + "']");
Umaisが述べたことに沿って、現時点ではこれに組み込まれた機能がないため、より良いアプローチは、すべてのレコードを反復処理して必要なレコードを見つけることです。私が作成した関数は、データのページがあっても機能します。私がこれを行うことを考えることができる他の唯一の方法は、セカンダリajax呼び出しを行うことです。しかし、これはうまく機能します。私は2000以上のレコードでそれをテストしていないことに注意してください。
var dataGrid = $("#GATIPS").data("kendoGrid").dataSource;
var numOfRows = dataGrid.total();
var currentPageSize = dataGrid.pageSize();
dataGrid.pageSize(numOfRows);
var dataGridData = dataGrid.data();
for (var i = 0; i < numOfRows; i++) {
if (dataGridData[i].uid == e)
return dataGridData[i];
}
dataGrid.pageSize(currentPageSize); // reset the view
eはUIDです。ただし、これは、チェックを置き換えるだけで必要な変数の代わりに使用できます。
さて、私が行ったこと(そして私のために働いたこと)に応じて、回避策は最もきれいではありませんが、モデルIDとClientTemplateを使用してもう1つの列を設定し、任意のhtmlオブジェクト(私の場合はdiv)を作成しますその中にあなたのIDのhtmlIDを与えるので、あなたがそれを必要とするときはいつでも、あなたはただ行って次のようなものを見る必要があります:
grid.dataItem($("td div#id").closest("tr"));
DataItemメソッドがセレクターを待機していることを忘れないでください。そうすると、selectedItemが通常のものとして取得されます。
編集:私はあなたがstyleプロパティを使うべきである(または使うことができる)と言うのを忘れました
display:none
その列を表示したくない場合。