web-dev-qa-db-ja.com

プログラムで剣道のグリッド行を選択する

類似のタイトルの投稿を見つけましたが、まだ問題を解決できません。間違いなく何か間違ったことをしている。

Kendoのグリッド構成には、コンテキスト(グリッド)を取り、選択した行を読み取るいくつかの機能があります。

change: function (e) {
            refresh(this);
        }

これが、「変更」イベントの構成方法です。

関数「refresh(grid)」では、次の方法で選択した行を取得しています:

    refresh: function (grid) {        
    var selectedRows = grid.select();
    var selectedRow = grid.dataItem(selectedRows[0]);
    var id = selectedRow.Id;
}

グリッド行を手動で選択すると、このアプローチは完璧に機能します。しかし、プログラムで行を選択すると、「selectedRow」変数はnullです。

私は次の方法でプログラムを選択しています:

var grid = $("#grid").data("kendoGrid"); 
var rows = grid.dataSource.data(); 
var row = rows[rows.length - 1]; 
grid.select(row);

上記で悲しいことに、以前の「refresh(grid)」メソッド変数selectedRowはnullになります。

それについて誰か意見がありますか?なぜそれが起こったのですか?

ありがとう

15
kat1330

グリッドのドキュメントによると、 "select" メソッドは "string"パラメーター(セレクター)またはjQuery要素を受け入れます。そのため、行を正しく選択する必要がある場合、現在のコードを次のように変更する必要があります。

var grid = $("#grid").data("kendoGrid"); 

//if you are using the "pageable" option of the grid
//you should get the visible rows using the .view() method
var models = grid.dataSource.data();

var model = models[models.length - 1]; 
var lastRowUid = model.uid;

//find the target row element:
var row = grid.table.find("[data-uid=" + lastRowUid + "]");

grid.select(row);
23
Vladimir Iliev