Добавление пользовательского значка в столбец действий jqgrid с событием onclick

Вот демонстрация, чтобы добавить пользовательский значок в столбце Действия jQgrid. В моем случае, если я добавлю 3 строки, gridComplete вызывается 3 раза. Итак, я получаю 3 пользовательских иконки в 1-м ряду, 2 в 2-м ряду и 1 в 3-м ряду. Есть ли в любом случае мы можем добавить собственные иконки на основе строк и столбцов???

gridComplete: function () {
                var iCol = getColumnIndexByName(grid, 'act');
                $(this).find(">tbody>tr.jqgrow>td:nth-child(" + (iCol + 1) + ")")
                    .each(function() {
                        $("<div>", {
                            title: "Custom",
                            mouseover: function() {
                                $(this).addClass('ui-state-hover');
                            },
                            mouseout: function() {
                                $(this).removeClass('ui-state-hover');
                            },
                            click: function(e) {
                                alert("'Custom' button is clicked in the rowis="+
                                    $(e.target).closest("tr.jqgrow").attr("id") +" !");
                            }
                        }
                      ).css({"margin-right": "5px", float: "left", cursor: "pointer"})
                       .addClass("ui-pg-div ui-inline-custom")
                       .append('<span class="ui-icon ui-icon-document"></span>')
                       .prependTo($(this).children("div"));
                });
            }

2 ответа

Решение

Посмотрите на модифицированную демонстрацию, созданную для ответа. Он использует jqGrid 4.4.4, но тот же код (см. Демонстрацию) работает и для jqGrid 4.5.2.

Я думаю, что есть ошибка в строке:

$(this).find(">tbody>tr.jqgrow>td:nth-child(" + (iCol + 1) + ")")

должно быть

$(this).find("tbody>tr.jqgrow>td:nth-child(" + (iCol + 1) + ")")

(удаляя ">" перед tbody)

Другие вопросы по тегам