2012-02-16 10 views
3

私は、セルをダブルクリックするとリストから値を選択できるようにするSlickGridの例7のバリエーションを使用しています。しかし、このメソッドはonCellChangeイベントを発生させず、データに対するすべての変更をキャッチしません。以下はコードのサンプルです。トリガーOnChangeCellイベント

grid.onDblClick.subscribe(function (e) { 
    e.preventDefault(); 
    var cell = grid.getCellFromEvent(e); 
    if (grid.getColumns()[cell.cell].id != "classID") {return}; 
    $("#contextMenu") 
     .data("row", cell.row) 
     .css("top", e.pageY) 
     .css("left", e.pageX) 
     .show(); 

    $("body").one("click", function() { 
     $("#contextMenu").hide(); 
    }); 

    $("#contextMenu").click(function (e) { 
     if (!$(e.target).is("li")) {return}; 
     var row = $(this).data("row"); 
    data[row].classID = $(e.target).attr("data"); //< data saved to grid here 
    grid.updateRow(row); 
    }); 
}); 

どのようにonCellChange機能をトリガするように勧められますか?

答えて

1

本当にそうすべきでしょうか。

考えてみましょう - ユーザーがグリッド内からアクションを開始した場合、グリッドはそのイベントを発生させます。外部的に/プログラム的に何かを変更したことは、どのように分かりますか?

changeイベントの処理を別の関数に移動し、onCellChangeハンドラとデータを直接更新する場所の両方から呼び出します。