5

Я использую asp.net mvc5 и пытаюсь использовать обработку данных на стороне сервера djatery datatable. Учебники по обработке на стороне сервера показывают формат для возвращения результата с сервера. Но разница в моем проекте заключается в том, что я не могу отправить типизированный массив для «данных» с сервера. Я отправляю весь текст как строку со всеми html-тегами. Мой код данных, как показано ниже.Почему не удалось использовать успех в обработке jquery datatable на стороне сервера ajax?

var e = t.DataTable({processing: true, 
     serverSide: true, 
     info: true, 
     stateSave: true, 
     PaginationType: "full_numbers", 
     ajax:{ 
      "url": '@Url.Action("AjaxGetJsonData","Define",new { tablename= @HttpContext.Current.Request.QueryString["tablename"] })', 
      "type": "GET", 
      "success": function (result) { 
       console.log(result); 

       $("#sample_1").find("tbody").html(result.data); 
       $("#sample_1_processing").hide(); 
       Init(); 
       //var oSettings = $("#sample_1").dataTable().fnSettings(); 
       //oSettings.iTotalRecords = result.recordsTotal; 

      } 

     } 

Результат Аякса это что-то вроде, как показано ниже,

Object {draw: 1, iTotalRecords: 25000, iTotalDisplayRecords: 0, data: Array[1]} 

данные как

<tr><td></td><td></td><td></td><td></td></tr> 

, потому что вид является общим для многих таблиц и есть много ситуации, я должен контролировать. Таким образом, я использую StringBuilder на стороне сервера. Если я положил успех на ajax, элементы разбиения на страницы исчезнут в нижней части данных. Почему в ajax нельзя использовать успех? У меня есть все общие черты datatable и есть ли способ установить такие функции, как iTotalRecords вручную? Я знаю, что здесь нет форума с датами. Я сожалею об этом, но я много времени провел и не могу найти решение. Я хочу обрабатывать все функции datatable в ajax success вручную. Я использую последнюю версию datatable.

+0

Почему вы не используете PartialView для Datatable? –

+0

@Alorika благодарит за ваш совет. Я уже использую частичное представление для таблицы. – emres

ответ

2

Я решил свою проблему в конце. Есть что-то интересное, но я могу использовать успех сейчас.

var e = t.DataTable({ 
     processing: true, 
     serverSide: true, 
     info: true, 
     stateSave: true, 
     PaginationType: "full_numbers", 
     "sAjaxSource": '@Url.Action("AjaxGetJsonData","Define")', 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      aoData.push({ "name": "tablename", "value": $("#temprory").val() }); 
      console.log(aoData); 
      $.ajax({ 
       url: sSource, 
       type: "POST", 
       data: aoData, 
       success: function (msg) { 
        fnCallback(msg); 
        console.log(msg); 
        $("#sample_1").find("tbody").html(msg.data); 
        $("#sample_1_processing").hide(); 
        Init(); 
       } 
      }); 
     } 

Интересный момент в том, что если вы удалите fnCallback (МВП), ниже часть DataTable, которая включает в себя пагинация исчезает. Я не знаю точно, что он делает, но это решило мою проблему.

+0

Кстати, Init() не связан с проблемой. Речь идет не о данных. – emres

 Смежные вопросы

  • Нет связанных вопросов^_^