开发者

jqGrid reloadGrid not working when last record is removed

开发者 https://www.devze.com 2023-04-01 21:08 出处:网络
I have a jqGrid on my page that receives its records using a json post to the server.On the same page, I also have a delete button.Clicking the delete button uses an ajax post to the server to delete

I have a jqGrid on my page that receives its records using a json post to the server. On the same page, I also have a delete button. Clicking the delete button uses an ajax post to the server to delete the selected record. After deleting the record, if the server returns a success code, I need the grid to refresh.

It seems to be working fine except when there is only one record in the grid. The last record I delete is never removed from the grid. Even if i press the refresh button on the footer it still won't go away. When there is more than one record it refreshes as I would expect it to.

I am new to jqGrid so I am sure I am doing something wr开发者_开发技巧ong. Any help would be appreciated.

jqGrid definition

    $('#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});

Delete button click event:

    $('#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'); 
    }

I have also tried

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

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

No matter what I do, the last record stays in the grid.

One last thing: When I trigger reloadGrid, the grid DOES make a call to the server and receives the updated information. The updated information contains 0 for the total number of records.

Thanks Again.


It seems I was able to resolve this issue by making a call to the following method:

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

Let me know if anyone has a better solution.

0

精彩评论

暂无评论...
验证码 换一张
取 消