JQuery Datatables(二)
前篇讲到了Datatables的基本用法,链接地址:http://www.cnblogs.com/wumian1360/p/4263129.html
今天来实现5,6,7三点。
其实Datatables控件本身就已经带了分页属性,排序属性和筛选属性,分别是:bPaginate,bSort,bFilter,我们只需要将这三个属性设置为true,那么在Ajax刷新的时候就会在Query String Parameters有参数了。具体如下:
1 sEcho:1 //操作次数,具体用途不是很清楚 2 iColumns:2 //Datatables的列总数 3 sColumns:Id,Name //列名 4 iDisplayStart:0 //分页开始页码 5 iDisplayLength:10 //每页显示行数 6 mDataProp_0:Id //第一列映射字段 7 sSearch_0: //第一列筛选内容 8 bRegex_0:false //该字段是否使用正则 9 bSearchable_0:true //是否使用筛选功能 10 bSortable_0:false //是否可以排序 11 mDataProp_1:Name //第一列映射字段 12 sSearch_1: //第一列筛选内容 13 bRegex_1:false //该字段是否使用正则 14 bSearchable_1:true //是否使用筛选功能 15 bSortable_1:true //是否可以排序 16 sSearch: //全文筛选 17 bRegex:false //是否使用正则 18 iSortCol_0:0 //当前排序列索引(第一列) 19 sSortDir_0:asc //排序为升序 20 iSortingCols:1 //排序的列数 21 _:1423311150960
功能很强大啊,什么都有了,那么只需要创建对象来接受处理这些参数,然后利用对象去分别做分页,排序和筛选就可。
该处理对象类用了“冠军”的代码,具体链接:http://www.cnblogs.com/haogj/archive/2011/03/21/1990595.html
有了该对象,那么可以在具体的Controller中处理了。
代码如下:
1 public JsonResult Get() 2 { 3 DataTablesRequest parm = new DataTablesRequest(this.Request); //处理对象 4 int totalCount = 0; 5 int start = parm.iDisplayStart; //页索引 6 int length = parm.iDisplayLength; //页行数 7 string order = string.Empty; //排序 8 9 //获取排序 10 if (parm.SortColumns.Count() > 0) 11 { 12 string sortField = parm.Columns[parm.SortColumns[0].Index].Name; 13 string sort = parm.SortColumns[0].Direction.ToString(); 14 order = sortField + " " + sort; 15 } 16 17 string strQuery = parm.Search; 18 string[] fields = new string[parm.iColumns]; 19 //此处可以创建对象来封装全文查询字段内容,简单,个人去实现即可 20 21 var list=XXXX.LoadPage(start,length,out totalCount,order,strQuery,fields) 22 23 return Json(new { aaData = list, iTotalRecords = totalCount, iTotalDisplayRecords = totalCount }, 24 JsonRequestBehavior.AllowGet); 25 }