5

Asp.net mvc5 kullanıyorum ve jquery datatable eklentisi sunucu tarafı işlemeyi kullanmaya çalışıyorum. Sunucu tarafı işleminin öğreticileri, sunucudan sonuç döndürmek için bir biçim gösterir. Ancak, projemdeki fark, sunucudan 'veri' için yazılan bir dizi gönderemem. Tüm html etiketleriyle tüm tweet'i string olarak gönderiyorum. Aşağıdaki gibi veri kodum.Neden jquery datatable server side processing ajax içindeki başarının kullanılmasına izin verilmiyor?

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; 

      } 

     } 

ajax sonucu, aşağıda gibi bir şey görünümü birçok tablolar için jenerik ve birçok durum olduğundan

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

veri

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

gibi olduğunu i control.Thus, sunucu tarafında StringBuilder kullanıyorum. Eğer ajax'a başarı koyarsam, sayfalandırma dibinde pagination elementleri yok olur. Ajax'ta neden başarıya izin verilmiyor? Tüm datatable özelliklerine sahibim ve iTotalRecords gibi özellikleri manuel olarak ayarlamanın herhangi bir yolu var mı? Biliyorum burada datatable forum değil. Bunun için üzgünüm ama çok zaman harcadım ve çözüm bulamıyorum. Dataja'nın tüm özelliklerini elle işlemek için ajax başarısıyla ele almak istiyorum. Datatable'ın son versiyonunu kullanıyorum.

+0

Neden Datatable için PartialView kullanmıyorsunuz? –

+0

@Alorika Tavsiyeniz için teşekkürler. Zaten tablo için kısmi görünüm kullanıyorum. – emres

cevap

2

Sonunda sorunumu çözdüm. İlginç bir şey var ama şimdi başarıyı kullanabilirim.

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(); 
       } 
      }); 
     } 

ilginç nokta fnCallback (msg), sayfalama kaybolur içerir datatable aşağıda bölümünü kaldırırsanız olmasıdır. Tam olarak ne yaptığını bilmiyorum ama bu benim problemimi çözdü.

+0

Init() yolu ile ilgili değil. Datatable ile ilgili değil. – emres