我的datatable脚本代码是:
$('#datatable').dataTable({
"processing": true,
"bServerSide": true,
"sAjaxSource": "/Employee/AjaxHandler",
"fnServerParams": function ( aoData ) {
aoData.push( { "name": "start", "value": something } );
}这是在控制器中调用AjaxHandler方法:
public ActionResult AjaxHandler(JQueryDataTableParamModel param,int start)
{
...
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = count,
iTotalDisplayRecords = count,
aaData = result
},
JsonRequestBehavior.AllowGet);
}我希望返回一个变量,该变量的值来自AjaxHandler方法,该值将赋值给aoData.push()中的属性" value“,当在分页/排序/筛选过程中再次调用时,该属性将被赋值给AjaxHandler方法中名为"start”的参数。
发布于 2014-08-12 09:26:44
请参阅下面的链接http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part
这是一个关于如何实现创建的目标的完整的逐步指南。
发布于 2014-08-12 11:25:51
我假设您正在尝试使用MVC实现datatable功能(分页等)?@Se0ng11添加的链接非常好,您应该坚持使用它。
为了给您一个开始,您需要为JQueryDataTableParamModel创建一个类:
public class jQueryDataTableParamModel
{
public string sEcho { get; set; }
public string sSearch { get; set; }
public int iDisplayLength { get; set; }
public int iDisplayStart { get; set; }
public int iColumns { get; set; }
public int iSortingCols { get; set; }
public string sColumns { get; set; }
}这个模型被传递给填充了分页、排序和过滤信息的contoller --您不需要添加aoData.push。
在您的控制器操作中:
public ActionResult AjaxHandler(JQueryDataTableParamModel param)
{
// query to get data
var data = from a in b select a;
var count = data.count();
//use the paging params on your datasource
var displayedItems = data.Skip(param.iDisplayStart).Take(param.iDisplayLength);
// project results into json for datatable
var result = from r in filteredItems
select new object[]
{
r.Id,
r.Name
...
}
return Json(new
{
param.sEcho,
iTotalRecords = count,
iTotalDisplayRecords = count,
aaData = result
}, JsonRequestBehavior.AllowGet);
}您可以在控制器方法中放置一个断点,并查看JQueryDataTableParamModel中传递的内容
https://stackoverflow.com/questions/25260672
复制相似问题