asp.net-mvc - loadonce :true in jqGrid 时分页不工作

标签 asp.net-mvc jqgrid-asp.net

在 jqGrid 中有属性 loadonce:true 那么我只获取第一页记录。我怎样才能获得第二页和第三页记录。

代码:

$(function () {

        $("#pendingAppgrid").jqGrid({
            colNames: ['Name', 'Email'],
            colModel: [
                        { name: 'Name', index: 'Name', sortable: true, align: 'left', width: '200',
                            editable: false, edittype: 'text',search:true

                        },

                         { name: 'Email', index: 'Email', sortable: false, align: 'left', width: '200',
                             editable: false, edittype: 'text',search:true
                         },  
                  ],
            pager: jQuery('#pager'),
            sortname: 'Name',
            rowNum: 15,
            rowList: [10, 20, 25],
            sortorder: "desc",
            height: 345,
            ignoreCase: true,
            viewrecords: true,
            rownumbers: true,
            caption: 'Pending Approvals',
            width: 660,
            url: "@Url.Content("~/Home/PendingApprovals")",
            datatype: 'json',
            mtype: 'GET',
            loadonce: true
        })
        jQuery("#pendingAppgrid").jqGrid('filterToolbar', { searchOnEnter: true, enableClear: false });

    });

服务器代码

public ActionResult PendingApprovals(int page, int rows, string sidx, string sord)
        {

            //return View(GetPendingApprovals());
            int currentPage = Convert.ToInt32(page) - 1;
            int totalRecords = 0;
            List<ViewModels.Channel.UserChannels> lTemChannel = new List<ViewModels.Channel.UserChannels>();
            List<ViewModels.Channel.UserChannels> lstChannel = new List<ViewModels.Channel.UserChannels>();
            lTemChannel = GetPendingApprovals();
            foreach (ViewModels.Channel.UserChannels cha in lTemChannel)
            {
                ViewModels.Channel.UserChannels channelWithLogo = new ViewModels.Channel.UserChannels();
                channelWithLogo.ID = cha.ID;
                channelWithLogo.Name = cha.Name;
                channelWithLogo.Email = cha.Email;

                lstChannel.Add(channelWithLogo);
            }
            totalRecords = lstChannel.Count;
            var totalPages = (int)Math.Ceiling(totalRecords / (float)rows);
                lstChannel = lstChannel.ToList<ViewModels.Channel.UserChannels>();

            IPagedList<ViewModels.Channel.UserChannels> ilstChannel;
            switch (sord)
            {
                case "desc":
                    ilstChannel = lstChannel.OrderByDescending(m => m.Name).ToPagedList(page, rows);
                    break;
                case "asc":
                    ilstChannel = lstChannel.OrderBy(m => m.Name).ToPagedList(page, rows);
                    break;
                default:
                    ilstChannel = lstChannel.OrderBy(m => m.Name).ToPagedList(page, rows);
                    break;
            }

            var data = ilstChannel;

            var jsonData = new
            {
                total = totalPages,
                page,
                records = totalRecords,

                rows = (from m in data
                        select new
                        {

                            id = m.ChannelID,
                            cell = new object[]
                           {
                               m.Name,
                               m.Email
                           }
                        }).ToArray()
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }

这里我只得到首页记录。我还有更多页。搜索功能运行良好。问题是我只有第一页记录。没有获取其他页面记录。我怎样才能获得另一页记录。请帮忙。

最佳答案

如果您使用loadonce:true jqGrid,请在第一次从网格加载数据后将数据类型参数更改为“local”。所有接下来的网格重新加载(排序、分页、过滤)都在本地进行。如果您想再次从服务器刷新网格数据,您应该将数据类型设置为其原始值(“json”或“xml”)。例如:

$("#pendingAppgrid").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');

请访问http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options有关 jqGrid 选项的更多详细信息。

关于asp.net-mvc - loadonce :true in jqGrid 时分页不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17228661/

相关文章:

asp.net-mvc - SignalR 和 MVC 包

javascript - 将 10 MB 的数据发送到客户端网格的最佳方式是什么?

asp.net-mvc - Ninject 注册每个请求

mysql - 使用 MVC 处理tinyInt boolean 值

c# - 使用 Identity 2.x 在 MVC5 中迁移匿名用户

jquery - jqGrid中的自定义删除按钮

asp.net-mvc - JQGrid 和 MVC 完整工作示例

c# - 单击有/无回发的 MVC 调用方法

jqgrid - 如何更改jqgrid分页样式

javascript - 是否可以按百分比设置 jQGrid 的宽度?