【问题标题】:JQuery Datatables serverside proccessing table doesn't refresh the contentJQuery Datatables服务器端处理表不刷新内容
【发布时间】:2013-06-21 12:23:04
【问题描述】:

当我第一次打开页面时,它显示结果很好,但是当我使用过滤或排序列等时。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);
}

我认为我的问题与客户端代码有关,但无法解决。

【问题讨论】:

    标签: jquery asp.net-mvc datatables


    【解决方案1】:

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

    但是,您始终将 1 作为 sEcho 返回。根据Datatable,带有sEcho 1 的数据已经被渲染,所以它不会渲染你的数据。您应该从jQueryDataTableParamModel 返回 sEcho 值。简单地说,替换

    sEcho = "1"  
    

    sEcho = table.sEcho
    

    【讨论】:

    • 我已经找到了解决方案。我暂时写了那个值,但我忘了改变它。无论如何,谢谢,你的回答被接受了,顺便说一句很酷的伊朗姓氏:)
    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多