jqGrid:如果编辑了主键列,如何更新行id

时间:2011-05-29 20:48:03

标签: jquery jqgrid

主键值用作从服务器返回的json数据中的行ID。 如果主键值被编辑并保存两次,则第二次保存会因jqGrid而导致错误 再次将原始主键值传递给编辑方法。

如果在内联编辑中更改主键值,如何将jqGrid行ID更新为新的主键值?

$(function () {
        var grid = $("#grid");
        grid.jqGrid({
                url: '<%= ResolveUrl("~/Grid/GetData?_entity=Strings")%>',
                datatype: "json",
                mtype: 'POST',
                scroll: 1,
                autoencode: true,
                colModel: [{
                    name: 'Source',
                    fixed: true,
                    editable: true,
                    width: 30
                }, { /* this is primary key passed also as id */
                    name: 'Est',
                    fixed: true,
                    editable: true,
                    width: 271
                }, {
                    name: 'Eng',
                    fixed: true,
                    editable: true,
                    width: 167
                }],
                gridview: true,
                pager: '#pager',
                viewrecords: true,
                editurl: '<%= ResolveUrl("~/Grid/Edit?_entity=Strings")%>',
        ...

2 个答案:

答案 0 :(得分:4)

rowid不再是网格对应id元素的<tr>属性的值。因此,要将rowid oldRowid更改为newRowid,您应该执行以下操作:

$("#" + oldRowid).attr("id", newRowid);

答案 1 :(得分:-1)

#gridPreSeleccion = id grid
grid multiselect=true
function eliminarSeleccionados() {
    var idsContribuyentesSelect = jQuery("#gridPreSeleccion").jqGrid('getGridParam', 'selarrrow');
    if(idsContribuyentesSelect.length == 0) {
        jQuery.MessageAlertSath("Es necesario seleccionar una fila.")
    } else {
        var ids = jQuery("#gridPreSeleccion").jqGrid('getDataIDs');
        var a = ids.length;
        var j = 0;
        while(j == 0) {
            if(jQuery("#gridPreSeleccion").jqGrid('getGridParam', 'selarrrow').length <= 0) {
                j = 1;
            } else {
                for(var i = 0; i < a; i++) {
                    if(idsContribuyentesSelect[0] == ids[i]) {
                        jQuery('#gridPreSeleccion').delRowData(ids[i]);
                        break;
                    }
                }
            }
        }
    }
}