【问题标题】:JQGrid Sorting is not working - MVC3JQGrid 排序不起作用 - MVC3
【发布时间】:2012-09-14 15:27:34
【问题描述】:

我正在尝试对 JQGrid 中的每一列进行排序,但它不起作用。请参考下面的代码并帮助我

//查看代码

     $("#JQGridID").jqGrid({
                            url: '/Control/ActionResult/',
                            datatype: 'json',
                            mtype: 'POST',
                            colNames: ['Number', 'Unit'],
                            colModel: [
              { name: 'NNumber', index: 'Number', align: 'left', sortable: true, sorttype: 'int' },
              { name: 'NUnit', index: 'Unit', align: 'Center', sortable: true }
              ],                            pager: jQuery('#pager'),
                            cmTemplate: { title: false },
                            width: widthValue - 15,
                            height: 435,
                            rowNum: 20,
                            rowList: [20, 30, 40, 50, 60],
                            viewrecords: true,
                            gridComplete: loadCompleteFunction,
                            altRows: true,
                            sortorder: 'desc',
                            sortname: 'Number',
                            sortable: true,
                            onSortCol: function (index, idxcol, sortorder) {
                    if (this.p.lastsort >= 0 && this.p.lastsort !== idxcol
                            && this.p.colModel[this.p.lastsort].sortable !== false) {
                        $(this.grid.headers[this.p.lastsort].el).find(">div.ui-jqgrid-sortable>span.s-ico").show();
                    }
                }
,
                            onSelectRow: showMessageDetails,
                            postData: {
                        },

                        loadError: function (xml) { alert('Unable to load result data.'); }
                    });

//控制代码

 [HttpPost]
        public ActionResult GetSearchPositionResult(string sidx, string sord, int page, int rows)
        {
            _Object = new PositionModel();
            _Object.CurrentPage = page;
            _Object.PageRowCount = rows;
            _Object.load();
            var result = new
            {
                total = _Object.TotalPages,
                page = page,
                sort = sidx,
                sord = sord,
                records = _Object.TotalRows,
                            rows = _ObjectPM.SearchResult.Select(p => new
            {
                cell = new string[]{
                 p.Number,
                 p.Unit
                },sidx
            }).OrderBy(a => a.sidx).ToArray(),                };
            return Json(result, JsonRequestBehavior.AllowGet);
        }

【问题讨论】:

  • 你能分享你的服务器端 vcode - 因为这是应该进行排序的地方
  • 我已添加控制页面代码。

标签: asp.net-mvc-3 sorting jqgrid


【解决方案1】:

datatype: 'json' 的情况下,数据的排序(colModel 中的sortable: true)不会由 jqGrid 在客户端处理,但必须由您的代码在服务器端处理。换句话说,您需要按您将在sidx 参数中收到的列名对您的_Object.SearchResult 进行排序(排序方向在sord 参数中传递)。

在这里您可以找到一个示例项目,它可以帮助您在 ASP.NET MVC 中使用 jqGrid:jqGrid in ASP.NET MVC 3 and Razor

【讨论】:

  • 嗨,Thaknx 为您的回复。我已经修改并上传了最新的代码。我在这个 exp 中提到了 'jqGrid in ASP.NET MVC 3 and Razor' 但找不到解决方案。
  • @Muthukumar 您所做的更改是将 sidx 和 sord 添加到响应中。我不知道那应该改变什么。您假设在服务器端代码中使用 sidx 和 sord 并返回已经排序的数据集(进行排序是您的工作)。这是在示例项目中的以下行中完成的:_productsRepository.GetProducts(filterExpression.ToString(), sortingName, request.SortingOrder.ToString(), request.PageIndex, request.RecordsCount, request.PagesCount.HasValue ? request.PagesCount.Value : 1))
  • 这有点像 - 在示例代码中,他们将排序名称作为参数传递。我已经修改了类似 rows = _ObjectPM.SearchResult.Select(p => new { cell = new string[]{ p.Number, p.Unit },sidx }).OrderBy(a => a.sidx).ToArray(), 的代码
  • @Muthukumar sidx 持有您列中的名称,您必须按该列的值对数据集进行排序。假设 sidx 包含值 Number,那么您的代码应如下所示:rows = _ObjectPM.SearchResult.OrderBy(p => p.Number).Select(p => new { id = p.Number, cell = new string[] { p.Number, p.Unit } }).ToArray()。当然,您需要根据 sidxsord 中的内容进行动态调整。
  • 再次感谢。我还有一个疑问。在这段代码中rows = _ObjectPM.SearchResult.OrderBy(p => p.Number).Select(p => new { id = p.Number, cell = new string[] { p.Number, p.Unit } }).ToArray(). 如何传递动态值sidx而不是p.Number
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多