web-dev-qa-db-ja.com

データアイテムIDで剣道グリッドの行を選択するにはどうすればよいですか?

KendoGridで特定の行を選択する必要がありますが、data-uidではなく(グリッドdataSourceが再度ロードされるとdata-uidが変更されるため)、行itemIDで選択します。投稿を見ましたが、uidで行を選択するだけで、必要なものではありません。実際にはHTML5アプリケーションを再起動する必要があり、グリッドが読み込まれると、特定の項目を選択する必要があります。これは私が見ているものです

デモ:jsfiddle.net/ruse​​v/qvKRk/3/

例えばオブジェクトにはOrderID as ID、そしてグリッドがロードされるたびに、それは同じになります。uidとは異なり、OrderIDの代わりにuidで行を選択する方法を知りたいです。

9
umais

私がなんとか回避したのは、すべての行を調べて、そのIDがパラメーターと等しい行モデルを確認してから、その行のdata-uidを取得し、data-uidを使用して項目を選択することでした。提案がなかったので、それは私にとってはうまく機能しています、それは今のところより良い答えです。

1
umais

行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 + "']");
27
Rui Martins

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です。ただし、これは、チェックを置き換えるだけで必要な変数の代わりに使用できます。

2
Chance

さて、私が行ったこと(そして私のために働いたこと)に応じて、回避策は最もきれいではありませんが、モデルIDとClientTemplateを使用してもう1つの列を設定し、任意のhtmlオブジェクト(私の場合はdiv)を作成しますその中にあなたのIDのhtmlIDを与えるので、あなたがそれを必要とするときはいつでも、あなたはただ行って次のようなものを見る必要があります:

    grid.dataItem($("td div#id").closest("tr"));

DataItemメソッドがセレクターを待機していることを忘れないでください。そうすると、selectedItemが通常のものとして取得されます。

編集:私はあなたがstyleプロパティを使うべきである(または使うことができる)と言うのを忘れました

    display:none

その列を表示したくない場合。