【问题标题】:jqGrid reloadGrid not working when last record is removed删除最后一条记录时jqGrid reloadGrid不起作用
【发布时间】:2011-09-02 17:21:33
【问题描述】:

我的页面上有一个 jqGrid,它使用 json 发布到服务器来接收其记录。在同一页面上,我还有一个删除按钮。单击删除按钮使用 ajax post 到服务器来删除选定的记录。删除记录后,如果服务器返回成功码,我需要刷新网格。

它似乎工作正常,除非网格中只有一条记录。我删除的最后一条记录永远不会从网格中删除。即使我按下页脚上的刷新按钮,它仍然不会消失。当有多个记录时,它会按照我的预期刷新。

我是 jqGrid 的新手,所以我确定我做错了什么。任何帮助将不胜感激。

jqGrid 定义

    $('#gridOrgs').jqGrid({
        url: 'some url goes here',
        datatype: 'json',
        mtype: 'POST',
        loadonce:false,
        colNames: ['ID', 'Name', 'City', 'Province', 'Admin'],
        colModel: [
            { name: 'Id', index: 'Id', hidedlg: true, hidden: true, sortable: false },
            { name: 'CompanyName', index: 'CompanyName', width: 200, sorttype: 'text' },
            { name: 'City', index: 'City', width: 150, sorttype: 'text' },
            { name: 'Province', index: 'Province', width: 150, sorttype: 'text' },
            { name: 'IsAdmin', index: 'IsAdmin', width: 50, sorttype: 'text', formatter: 'checkbox', align: 'center'},
            ],
        pager: '#pagerOrgs',
        jsonReader: {
            repeatitems: false,
            id: 'Id' },
        rowNum: 10,
        rowList: [10, 25, 50, 75, 100],
        sortname: 'CompanyName',
        sortorder: 'desc',
        viewrecords: true,
        caption: 'Companies',
        hidegrid: false,
        width: 650,
        height: 400,
        onSelectRow: function (id) {
                if (id)
                    RowSelected(id, $('#gridOrgs').getCell(id,'IsAdmin'));
                else
                    NoRowSelected();
            }
    });
    jQuery("#gridOrgs").jqGrid('navGrid','#pagerOrgs',{edit:false,add:false,del:false});

删除按钮点击事件:

    $('#btnDelete').click(function() {
        var id = jQuery("#gridOrgs").jqGrid('getGridParam','selrow');

        if (id)
           $.post('@Url.Action("Json_Delete", "Organization")', {'id': id}, function(data){ProcessDeleteResponse(data.result);}, 'json');
        else
            $('#dialogNothingSelected').dialog('open');
    });

    function ProcessDeleteResponse(resultCode) {
        if (resultCode == 'success')
            $('#gridOrgs').trigger('reloadGrid'); 
    }

我也试过

.trigger('reloadGrid', [{page:1}]);

.trigger('reloadGrid', [{current:true}]);

无论我做什么,最后一条记录都保留在网格中。

最后一件事:当我触发 reloadGrid 时,网格确实会调用服务器并接收更新的信息。更新后的信息中记录总数为 0。

再次感谢。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    看来我可以通过调用以下方法来解决此问题:

    $('#gridOrgs').jqGrid('delRowData', id);
    

    如果有人有更好的解决方案,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2019-03-28
      相关资源
      最近更新 更多