2012-02-16 1 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

정말 그렇습니다.

생각해보십시오. 그리드가 사용자가 그리드 내에서 작업을 시작하면 해당 이벤트가 발생합니다. 외부/프로그래밍 방식으로 변경 한 것을 어떻게 알 수 있습니까?

변경 이벤트 처리를 별도의 함수로 옮기고 onCellChange 핸들러와 데이터를 직접 업데이트하는 곳에서 호출하십시오.