Инициировать событие OnChangeCell - PullRequest
3 голосов
/ 16 февраля 2012

Я использую вариант примера 7 SlickGrid, который позволяет выбрать значение из списка при двойном щелчке по ячейке.Однако этот метод не запускает событие onCellChange, и я не отслеживаю все изменения данных.Ниже приведен пример кода.

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 Ответ

1 голос
/ 16 февраля 2012

Да и не должно.

Подумайте об этом - сетка запускает это событие, если пользователь инициирует действие изнутри сетки. Как он узнал, что вы изменили что-то внешне / программно?

Просто перенесите обработку события изменения в отдельную функцию и вызовите ее как из обработчика onCellChange, так и из тех мест, где вы непосредственно обновляете данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...