第一次打开页面时,它显示的结果很好,但是当我使用过滤或对列进行排序时。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。根据Datatable,具有sEcho 1的数据已经准备好呈现,因此它不呈现您的数据。您应该从jQueryDataTableParamModel返回sEcho值。只需更换

sEcho = "1"




sEcho = table.sEcho

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

10-10 16:34