【问题标题】:jqGrid: Adding a Delete button to the Edit formjqGrid:向编辑表单添加删除按钮
【发布时间】:2025-12-16 06:00:01
【问题描述】:

我是 jqGrid 新手。我需要在编辑表单中添加一个删除按钮。我可以添加按钮,它会按预期显示,包括确认对话框,但是一旦按下,我不确定如何引用原始行 ID:

// Add a Delete button in Edit form:
    $.extend($.jgrid.edit, {
        bSubmit: "Submit",
        bCancel: "Cancel",
        width: 370,
        recreateForm: true,
        beforeShowForm: function () {
            $('<a href="#">Delete<span class="ui-icon ui-icon-circle-close"></span></a>')
                .click(function() {
                    if(confirm("Are you sure you want to delete this record?")) {
                        $("#projectList").jqGrid('delGridRow', row_id);
                    }
                }).addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left")
                  .prependTo("#Act_Buttons>td.EditButton");
        }
    });

上面代码中的row_id没有定义..如何从代码中的这个地方引用当前选中行的id?上述函数目前与其他主要的 jqGrid 函数并行,例如 $("#projectList").jqGrid({ .. })。或者更好的是,我怎样才能从这里挂钩到默认的 jqGrid 删除功能? 谢谢!

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    要获取beforeShowForm 内的编辑行的rowid,您可以使用编辑表单有一些隐藏行的事实,这些行包含可能对您有所帮助的信息。添加/编辑对话框在 id="id_g" 的隐藏行中有输入字段。输入字段包含编辑行的 id。添加对话框在字段中包含_empty 字符串。

    所以你可以修改beforeShowForm回调为

    beforeShowForm: function () {
        var row_id = $("#id_g").val();
        ...
    }
    

    或以下

    beforeShowForm: function ($form) {
        var row_id = $("#id_g", $form).val(), $self = $(this);
        ...
        $self.jqGrid('delGridRow', row_id);
        ...
    }
    

    【讨论】:

    • 成功了,非常感谢奥列格!不过有一个小问题:确认对话框现在出现在表单对话框的后面。我怎样才能改变这个? beforeShowForm: function () { var row_id = $("#id_g").val(); $('删除') .click(function() { $("# projectList").jqGrid('delGridRow', row_id, {mtype:"DELETE"}); }).addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left") 。 prependTo("#Act_Buttons>td.EditButton"); }
    • @user2309409:我不确定您指的是哪个确认对话框。一般来说,您可以使用zIndex 选项来更改编辑表单的位置。您还可以更改$.jgrid.jqModalzIndex 属性的值或使用navGridalertzIndex 选项,您也可以根据$.jgrid.nav 设置。
    • zIndex 成功了 :) 非常感谢 Oleg。您在支持 jqGrid 社区方面做得非常出色!