繁体   English   中英

jqgrid分页重复相同的行

[英]jqgrid paging repeats the same rows

我在asp.net mvc上使用jqgrid。

我的观点:

        $("#phoneGrid").jqGrid({
        url: '/Demo/_PhoneChangeData',
        datatype: 'json',
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
        serializeGridData: function (postData) {
            if (postData.searchField === undefined) 
               postData.searchField = null;
            if (postData.searchString === undefined) 
               postData.searchString = null;
            if (postData.searchOper === undefined) 
               postData.searchOper = null; 
            return JSON.stringify(postData);
        },
        jsonReader: {
            root: "rows", 
            page: "page",
            total: "total",
            records: "records",
            cell:"cell",
            id: "id" 
        },
        postData:
        {
            accountNumber: "@Model.AccountNumber",
        },
        autoWidth: true,
        shrinkToFit: false,
        mtype: 'POST',
        colNames: ['Phone Number', 'Update Date', 'Update Time'],
        colModel: [
         { name: 'PhoneNumber', width:100, align: 'left' },
         { name: 'UpdateDate', width: 100, align: 'left' },
         { name: 'UpdateTime', width: 100, align: 'left' }],
        rowNum: 10,
        rowList: [], 
        pager: "#pagerphonedetail",
        viewrecords: true, 
        rownumbers: true,
        pgtext: null, 
        width: 346,
        height: 232

    });

我的控制器:

public ActionResult _PhonePopupChangeData(string accountNumber, 
    int page, int rows, string sidx, string sord,
    bool _search, string searchField, string searchOper, string searchString)
    {
        var phdetail = query.GetPhoneUpdHistory(accountNumber);// returns a list

        int recordsCount =  phdetail.Count;

        var viewData = phdetail.Select((p, index) => new TableRow
        {
            id = index + 1,
            cell = new List<string> {
                p.PhoneNumber,  p.UpdateDate, p.UpdateTime
            }
        }).ToArray();
        var jsonData = new
        {
            total = (recordsCount + rows - 1) / rows,
            page = page,
            records = recordsCount,
            rows = viewData
        };

        return Json(jsonData, JsonRequestBehavior.AllowGet);
    }

问题:我的问题是,每次回发后(如果我单击分页上的下一步),网格中的行将永远不会更新,屏幕截图显示它更新了页面编号,但是我仍然得到网格的前10行,它永远不会更新。 如果您不明白我的问题,请告诉我。


在此处输入图片说明

似乎您没有在控制器中使用page参数,而是每次都获得相同的列表。 您可以执行以下操作:

var viewData = phdetail.Skip(rows*(page-1)).Take(rows).Select((p, index) 
    => new TableRow {
        id = index + 1,
        cell = new List<string> {
            p.PhoneNumber,  p.UpdateDate, p.UpdateTime
        }
    }).ToArray();

我假设行是每页的行数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM