【问题标题】:How to pass value from controller to jquery datatable如何将值从控制器传递到 jquery 数据表
【发布时间】:2014-08-12 09:23:40
【问题描述】:

我的数据表脚本代码是:

$('#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() 中的“值”将分配给 AjaxHandler 方法中名为“start”的参数。我该怎么做

【问题讨论】:

    标签: asp.net-mvc jquery-datatables


    【解决方案1】:

    参考以下链接 http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part

    这是关于如何实现创建 ajax jquery 数据表的目标的非常完整的分步指南

    【讨论】:

    • 对不起,我还没有找到解决办法
    【解决方案2】:

    我假设您正在尝试使用 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 中传递的内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-29
      • 2020-11-09
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多