私は剣道グリッドを持っています。そこで、次のようなエディタを定義しました:
@(Html.Kendo().Grid(Model.Data)
.Name("GridINT")
.Editable(editable => editable
.Mode(GridEditMode.PopUp)
.TemplateName("MyTemplateName")
.Window(w => w.Width(500))
.Window(w => w.Title("My Template")))
エディターを使用する前に、マウスアップ ハンドラーを行にバインドし、コマンド ボタンのスタイルを微調整します。Submit、Cancel、または 'X' のいずれかでエディターを閉じると、影響を受ける行のハンドラーとスタイルの微調整がなくなります。それらを復元する必要がありますが、有効なイベントが見つかりません。キャンセル クリック イベントを次のようにバインドしました。
$('.k-grid-cancel').bind('click', function ( e ) {
colorCommandCells();
});
しかし、ここでハンドラー/スタイルをグリッド行に復元すると、エディターを閉じるプロセスによって、実行したことが取り消されます。
結論: エディターがグリッドの更新を終了したこと (先ほど説明したように、エディターがキャンセルされた場合でも終了します) と、エディターが台無しにした行はどの行であったかをどのように知ることができますか?
これは、コマンド セルに色を付けるコードです。
function colorCommandCells() {
// This block colors the command cell according to ISNEW. It must run every time the DataBound event occurs.
var grid = $("#GridINT").data("kendoGrid");
var gridData = grid.dataSource.view();
for (var i = 0; i < gridData.length; i++) {
var currentUid = gridData[i].uid;
var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']");
var editButton = $(currentRow).find(".k-grid-edit");
var aColor = gridData[i].ISNEW == 1 ? "#FFCCFF" : "transparent";
var aText = gridData[i].ISNEW == 1 ? "Add" : "Edit";
var parent = $(editButton).closest("td");
$(parent[0]).css('background-color', function () { return aColor; });
editButton[0].innerHTML = "<span class=\"k-icon k-edit\"></span>" + aText;
}
}