Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 JQGrid排序不工作-MVC3_Asp.net Mvc 3_Sorting_Jqgrid - Fatal编程技术网

Asp.net mvc 3 JQGrid排序不工作-MVC3

Asp.net mvc 3 JQGrid排序不工作-MVC3,asp.net-mvc-3,sorting,jqgrid,Asp.net Mvc 3,Sorting,Jqgrid,我试图对JQGrid中的每一列进行排序,但它不起作用。请参考下面的代码并帮助我 //视图代码 $("#JQGridID").jqGrid({ url: '/Control/ActionResult/', datatype: 'json', mtype: 'POST',

我试图对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);
        }

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


在这里,您可以找到一个示例项目,该项目有助于在ASP.NET MVC中使用jqGrid:

对于
数据类型:“json”
数据排序(
colModel
中的
sortable:true
)不是由jqGrid在客户端处理的,而是必须由您的代码在服务器端处理的。换句话说,您需要根据将在
sidx
参数中收到的列名对
\u对象进行排序。SearchResult
(排序方向在
sord
参数中传递)


在这里,您可以找到一个示例项目,该项目有助于在ASP.NET MVC中使用jqGrid:

您可以共享服务器端vcode吗?因为这是排序的地方我添加了控制页代码。您可以共享服务器端vcode吗?因为这是排序的地方我添加了控制页代码。您好,谢谢你的答复。我已经修改并上传了最新的代码。我在这个exp中引用了“ASP.NET MVC 3和Razor中的jqGrid”,但找不到解决方案。@Muthukumar您所做的更改是将sidx和sord添加到响应中。我不知道这会发生什么变化。假设在服务器端代码中使用sidx和sord,并返回已排序的数据集(排序是您的工作)。这是在以下行的示例项目中完成的:
\u products respository.GetProducts(filterExpression.ToString()、sortingName、request.SortingOrder.ToString()、request.PageIndex、request.RecordScont、request.PageScont.HasValue?request.PageScont.Value:1))
这类似于-在示例代码中,他们将sortingName作为参数传递。我修改了如下代码:
rows=\u ObjectPM.SearchResult.Select(p=>new{cell=newstring[]{p.Number,p.Unit},sidx}).OrderBy(a=>a.sidx.ToArray(),
@Muthukumar
sidx
保存了列中的名称,您必须根据该列的值对数据集进行排序。假设sidx包含value Number,那么您的代码应该如下所示:
rows=\u ObjectPM.SearchResult.OrderBy(p=>p.Number)。选择(p=>new{id=p.Number,cell=new string[]{p.Number,p.Unit})。ToArray()
。当然,您需要根据
sidx
sord
中的内容进行动态调整。再次感谢。我还有一个疑问。在这段代码中,
rows=\u ObjectPM.SearchResult.OrderBy(p=>p.Number)。选择(p=>new{id=p.Number,cell=newstring[]{p.Number,p.Unit})。ToArray()如何传递动态值
sidx
,而不是
p.Number
Hi,Thaknx作为您的回复。我已经修改并上传了最新的代码。我在这个exp中引用了“ASP.NET MVC 3和Razor中的jqGrid”,但找不到解决方案。@Muthukumar您所做的更改是将sidx和sord添加到响应中。我不知道这会发生什么变化。假设在服务器端代码中使用sidx和sord,并返回已排序的数据集(排序是您的工作)。这是在以下行的示例项目中完成的:
\u products respository.GetProducts(filterExpression.ToString()、sortingName、request.SortingOrder.ToString()、request.PageIndex、request.RecordScont、request.PageScont.HasValue?request.PageScont.Value:1))
这类似于-在示例代码中,他们将sortingName作为参数传递。我修改了如下代码:
rows=\u ObjectPM.SearchResult.Select(p=>new{cell=newstring[]{p.Number,p.Unit},sidx}).OrderBy(a=>a.sidx.ToArray(),
@Muthukumar
sidx
保存了列中的名称,您必须根据该列的值对数据集进行排序。假设sidx包含value Number,那么您的代码应该如下所示:
rows=\u ObjectPM.SearchResult.OrderBy(p=>p.Number)。选择(p=>new{id=p.Number,cell=new string[]{p.Number,p.Unit})。ToArray()
。当然,您需要根据
sidx
sord
中的内容进行动态调整。再次感谢。我还有一个疑问。在这段代码中,
rows=\u ObjectPM.SearchResult.OrderBy(p=>p.Number)。选择(p=>new{id=p.Number,cell=newstring[]{p.Number,p.Unit})。ToArray()
如何传递动态值
sidx
而不是
p.Number