JQGrid:如何获取自定义“删除”列的选定行ID

时间:2017-10-10 03:43:21

标签: javascript jquery jqgrid

我跟进JQGrid page的示例代码(选择导航器“行编辑(新)”=>左侧的“自定义编辑”)。 我尝试显示“删除”列,我也在JQGrid页面上跟进以下脚本(选择导航器“实时数据操作”=>左侧的“删除行”)。

$("#dedata").click(function(){
    var gr = jQuery("#delgrid").jqGrid('getGridParam','selrow');
    if( gr != null ) jQuery("#delgrid").jqGrid('delGridRow',gr,{reloadAfterSubmit:false});
    else alert("Please Select Row to delete!");
});

我的问题是,gr不是返回row_id值。 你知道如何获得selected row id吗?

这是我的JQGrid脚本:

$("#UserListGrid").jqGrid({
    ... //Some above jqGrid options 
    /* Fill in column "Delete" */ 
    gridComplete: function () {
        var ids = jQuery("#UserListGrid").jqGrid('getDataIDs');
        for (var i = 0; i < ids.length; i++) {
            var cl = ids[i];
            de = "<input style='height:22px;width:50px;' type='button' value='Delete' onclick=\"JQGridRemoveSelectedRow('UserListGrid');\" />";
            jQuery("#UserListGrid").jqGrid('setRowData', ids[i], {
                act: de
            });
        }
    }
});

function JQGridRemoveSelectedRow(JQGridID) {
    var gr = jQuery("#" + JQGridID).jqGrid('getGridParam', 'selrow');

    alert(gr);
    /* if (gr != null) jQuery("#" + JQGridID).jqGrid('delGridRow', gr, { reloadAfterSubmit: false });
    else alert("Please Select Row to delete!");*/
    if (gr != null)
        alert(gr );
    else
        alert("Please Select Row to delete!");
}

我尝试查看gr,它会返回值jqg1jqg2jqg3,但我想获得Selected Row_Id

1 个答案:

答案 0 :(得分:1)

首先,值jqg1jqg2jqg3实际上是rowid,jQuery("#delgrid").jqGrid('getGridParam','selrow')返回正确的值。根据定义,rowid是网格的相应行(id元素的id)上的<tr>属性的值。 jqGrid 始终为每一行分配id属性。见the picture。如果您使用本地数据,则delGridRow会毫无问题地删除该行。

您写道,您希望将Email用作rowid。来自Email的值是否唯一(可能没有两行使用相同的电子邮件)?您可以更改代码以通知jqGrid将Email列中的值用作rowid。为此,您只需在key: true的{​​{1}}列定义中添加Email属性。

或者,您可以扩展从服务器返回的JSON数据,并将colModel属性包含在其中。您可以将id属性的值用作用户的电子邮件或UserId的值,该值来自您在后端使用的数据库的相应表。您可以自由定义哪些信息(哪个值)可以更好地识别用户。