我的数据表脚本代码是:
$('#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()里面,它将被分配给名为&#34的参数; start"在分页/排序/过滤期间再次调用时,在AjaxHandler方法中。我该怎么做
答案 0 :(得分:2)
参考以下链接 http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part
这是一个非常完整的分步指南,指导您如何实现创建ajax jquery数据表的目标
答案 1 :(得分:0)
我假设您正在尝试使用MVC获取数据表功能(分页等)吗? @ 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; }
}
将此模型传递给填充有分页,排序和放大器的控制器。过滤信息 - 您不需要添加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