Событие привязки jqGrid в функции gridComplete - PullRequest
0 голосов
/ 10 февраля 2012

Я использую jqgrid в моем проекте ASP.NET MVC. Я пытаюсь связать событие клика в функции gridComplete. Затем я хочу определить, является ли ячейка, на которую щелкнули, редактируемой или нет. Пока у меня есть это:

    gridComplete: function () {
                var ids = jQuery("#resources").jqGrid('getDataIDs');
                for (var i = 0; i < ids.length; i++) {
                    var cl = ids[i];
                    jQuery('#resources').jqGrid('editRow', cl);
                }
                $("#resources td").click(function(e) {
                    ...//here I want to check if clicked cell is editable
                });

     }

как видите, я готовлю строки к редактированию сразу после загрузки сетки. это относится только к столбцам с атрибутом editable = true.

UPDATE:

Решение было очень простым:

    $("#resources td").click(function(e) {
                    var sClassName = e.target.className;
                    if (sClassName == "editable") {
                        //editable cell is clicked
                    }
     });

1 Ответ

0 голосов
/ 10 февраля 2012

Я не совсем понимаю ваши требования.Какие дополнительные действия вы хотите выполнить при нажатии на «редактируемую» или «нередактируемую» ячейку?

Тем не менее, я бы порекомендовал вам использовать onCellSelect обработчик обратного вызова вместо привязки clickсобытие для каждой ячейки сетки.Для понимания каждой привязки требуются некоторые ресурсы веб-браузера.Вместо привязки событий к ячейкам вы можете выполнить только one привязку к любому родительскому элементу ячейки, например <table> (сама сетка).Из-за механизма, известного как поток событий , распространение события или всплывающее сообщение необработанные события будут обрабатываться тем же обработчиком событий родительского элемента илиродитель родителя и тд.Обработчик события получает Объект события , свойство target которого помогает определить, какой элемент был первоначально нажат.

Таким образом, вы можете использовать код типа

onCellSelect: function (rowid, iCol, cellcontent, e) {
    var colModel = $(this).jqGrid('getGridParam', 'colModel');
    if ($.isArray(colModel) && !colModel[iCol].editable) {
        // non-editable cell is clicked 
    }
}

или

onCellSelect: function (rowid, iCol, cellcontent, e) {
    if (!this.p.colModel[iCol].editable) {
        // non-editable cell is clicked 
    }
}

, чтобы определить, была ли ячейка, выбранная в данный момент, недоступна для редактирования.

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