JQuery Datatables(二)

时间:2023-03-09 13:12:24
JQuery Datatables(二)

前篇讲到了Datatables的基本用法,链接地址:http://www.cnblogs.com/wumian1360/p/4263129.html

今天来实现5,6,7三点。

其实Datatables控件本身就已经带了分页属性,排序属性和筛选属性,分别是:bPaginate,bSort,bFilter,我们只需要将这三个属性设置为true,那么在Ajax刷新的时候就会在Query String Parameters有参数了。具体如下:

 sEcho:1                //操作次数,具体用途不是很清楚
iColumns:2 //Datatables的列总数
sColumns:Id,Name //列名
iDisplayStart:0 //分页开始页码
iDisplayLength:10 //每页显示行数
mDataProp_0:Id //第一列映射字段
sSearch_0: //第一列筛选内容
bRegex_0:false //该字段是否使用正则
bSearchable_0:true //是否使用筛选功能
bSortable_0:false //是否可以排序
mDataProp_1:Name //第一列映射字段
sSearch_1: //第一列筛选内容
bRegex_1:false //该字段是否使用正则
bSearchable_1:true //是否使用筛选功能
bSortable_1:true //是否可以排序
sSearch: //全文筛选
bRegex:false //是否使用正则
iSortCol_0:0 //当前排序列索引(第一列)
sSortDir_0:asc //排序为升序
iSortingCols:1 //排序的列数
_:1423311150960

Http请求参数

功能很强大啊,什么都有了,那么只需要创建对象来接受处理这些参数,然后利用对象去分别做分页,排序和筛选就可。

该处理对象类用了“冠军”的代码,具体链接:http://www.cnblogs.com/haogj/archive/2011/03/21/1990595.html

有了该对象,那么可以在具体的Controller中处理了。

代码如下:

 public JsonResult Get()
{
DataTablesRequest parm = new DataTablesRequest(this.Request); //处理对象
int totalCount = 0;
int start = parm.iDisplayStart; //页索引
int length = parm.iDisplayLength; //页行数
string order = string.Empty; //排序 //获取排序
if (parm.SortColumns.Count() > 0)
{
string sortField = parm.Columns[parm.SortColumns[0].Index].Name;
string sort = parm.SortColumns[0].Direction.ToString();
order = sortField + " " + sort;
} string strQuery = parm.Search;
string[] fields = new string[parm.iColumns];
//此处可以创建对象来封装全文查询字段内容,简单,个人去实现即可 var list=XXXX.LoadPage(start,length,out totalCount,order,strQuery,fields) return Json(new { aaData = list, iTotalRecords = totalCount, iTotalDisplayRecords = totalCount },
JsonRequestBehavior.AllowGet);
}

Ctroller操作