JQuery Datatables服务器端处理表不刷新内容

标签 jquery asp.net-mvc datatables

当我第一次打开页面时,它显示的结果很好,但是当我使用过滤或排序列等时,ajax 方法成功返回正确的元素,并且 json 格式看起来正确,但网格不更新内容。我通过以下方式初始化数据表:

$('#myDataTable').dataTable({
    "sAjaxSource": '@Url.Action("_Index")',
    "bServerSide": true,
    "aoColumns": [
                    { "sName": "Konu" },
                    { "sName": "Şikayet" },
                    { "sName": "Kullanıcı Adı" },
                    { "sName": "Müşteri Adı" },
                    { "sName": "Müşteri Soyadı" },
                    { "sName": "Şirket Adı" },
                    { "sName": "Cevaplandı" },
                    {
                        "sName": "Cevap Ver",
                        "bSearchable": false,
                        "bSortable": false,
                        "fnRender": function (oObj) {
                            return '<a href='+'@Url.Action("Edit")' + '/' +  
                                oObj.aData[7] + '>Cevap Ver</a>';
                        }
                    }
                ]
});

在服务器端:

public ActionResult _Index(jQueryDataTableParamModel table)
{
    var feedbacksList = (List<FeedbackAjaxVM>)AppService.QueryInfo("Admin", "GetFeedbackAjaxList", table);

    IEnumerable<string[]> feedbacks = from c in feedbacksList
                 select new string[] { 
                     c.Subject, 
                     c.Text, 
                     c.Username, 
                     c.CustomerName, 
                     c.CustomerSurname, 
                     c.CustomerFirmname, 
                     c.Response, 
                     c.Id.ToString() 
                 };

    return Json(new
   {
        sEcho = "1",
        iTotalRecords = feedbacksList.FirstOrDefault() != null ? feedbacksList.FirstOrDefault().TotalRecords : 0,
        iTotalDisplayRecords = table.iDisplayLength,
        aaData = feedbacks
    },JsonRequestBehavior.AllowGet);
}

我认为我的问题与客户端代码有关,但无法弄清楚。

最佳答案

sEcho 对于 Datatables 渲染数据至关重要。这些调用是异步的,因此 Datatables 需要知道请求的顺序,通过在每次服务器调用中递增 sEcho 变量来保留此顺序。

但是,您始终返回 1 作为 sEcho。根据 DatatablesEcho 1 的数据已全部渲染完毕,因此不会渲染您的数据。您应该从 jQueryDataTableParamModel 返回 sEcho 值。简单地,替换

sEcho = "1"  

sEcho = table.sEcho

关于JQuery Datatables服务器端处理表不刷新内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235149/

相关文章:

Javascript变量设置-列表项

c# - 数据库中已有一个名为 "Accounts"的对象 (ASP.NET MVC)

javascript - 数据表 : How to hide the pagination and only show it as need?

datatables - 在数据表中使用对象而不是数组

jquery - 如何从 Web Api .Net 中的 AuthorizeAttribute 检索 POST 参数?

javascript - DataTable 分配给构造函数不添加数据

javascript - jQuery UI Vertical Tabs 使页面滚动 "stick"

javascript - 如何仅在UC Mini浏览器的极速模式下显示div?

javascript - 使用 val(value) 设置文本框的值不起作用

asp.net - ASP.Net Core MVC 中的 OutputCache