web-dev-qa-db-ja.com

グループ化された剣道グリッドで選択した行のインデックスとデータを取得するにはどうすればよいですか

私は次のように行インデックスにアクセスしようとしています:

_var grid = $("#grid").data("kendoGrid");
alert(grid.select().index());
_

この jsfiddle リンクにコードを追加しました。このコードは私のシステムで機能しました。なぜdeleteRecord()メソッドがjsfiddleで呼び出されないのかわかりませんが、それは実際の質問ではありません。

ここで、最後の行のキャンセルボタンをクリックすると、アラートメッセージにインデックスが8と表示されますが、実際のインデックスは4。すべてのボタンは私に間違ったインデックスだけを与えます。

6
Gunaseelan

フィドルで非常に古いバージョンのKendoUIを使用しているため、選択も機能しませんでした。 deleteRecordが見つからなかった理由は、フィドルを_window.onLoad_でラップするように設定したためです。これは、_document.ready_の後に発生します。

行インデックスについて:グリッドのデータ行に関連するインデックスを決定する必要があります(選択した行のインデックスを取得するだけで、グループ化行もカウントされます。詳細行がある場合も同様です)。 、したがって、次のようにgrid.items()を使用できます。

_var grid = $("#grid").data("kendoGrid");        
var dataRows = grid.items();
var rowIndex = dataRows.index(grid.select());
_

デモを参照 ここ

選択した行のデータにアクセスすることに本当に関心がある場合は、次のようなものを使用する必要があります(これはすべて、グリッドがセルまたは単一行の選択に設定されていることを前提としています)。

_var tr = grid.select().closest("tr");
var dataItem = grid.dataItem(tr);
_
14
Lars Höppner

だから、それは私の剣道の構成かもしれませんが、選択したレコードの行インデックスにアクセスする必要がある方法は次のようでした:

var archGrid = $("#archiveRecords").data("kendoGrid");
var impGrid = $("#importedRecords").data("kendoGrid");

var archRow = archGrid.select();
var impRow = impGrid.select();

var archRowIndex = archRow[0].rowIndex;
var impRowIndex = impRow[0].rowIndex;

したがって、変数にインデックスを設定したら、指定した行にCSSクラスを追加および削除してインデックスを設定する必要がありました。これを行うには、element.findメソッドを使用する必要がありました。

if (condition1) {
    impRow.removeClass('k-state-selected');
    $('#importedRecords').data('kendoGrid').element.find('tbody tr:eq(' + archRowIndex + ')').addClass('k-state-selected');
}
else if (condition2){
    archRow.removeClass('k-state-selected');
    $('#archiveRecords').data('kendoGrid').element.find('tbody tr:eq(' + impRowIndex + ')').addClass('k-state-selected');
}

行インデックスで選択した行を設定する方法を探すのに長い時間を費やしたので、投稿するだけです。幸運を!

1
Connor Williams

以下のコードは、剣道グリッドの行インデックスと列インデックスを提供します。これが役立つことを願っています

var grid = $("#kendogridid").data("kendoGrid");
                  var row = $(this).closest("tr");
      var rowIdx = $("tr", grid).index(row);        
                  var colIdx = $("td", row).index(this);
0
Gautam