2015-02-11 13 views
40

Stworzyłem ten skrzypce i to działa dobrze, jak na moje wymagania: FiddleJQuery DataTables: Nie można odczytać własności „aDataSort” undefined

Jednak kiedy używać tego samego w mojej aplikacji pojawia się błąd w przeglądarce konsola mówiąc nie można odczytać własności „aDataSort” undefined

W mojej aplikacji javascript czyta coś takiego jak poniżej: Sprawdziłem wyjścia regulatora ... to działa dobrze i jest drukowana na konsoli zbyt.

$(document).ready(function() { 

    $.getJSON("three.htm", function(data) { 
      // console.log("loadDataTable >> "+JSON.stringify(data)); 
      }) 
      .fail(function(jqxhr, textStatus, error) { 
      var err = textStatus + ', ' + error; 
      alert(err); 
      console.log("Request Failed: " + err); 
      }) 
      .success(function(data){ 
       loadDataTable(data); 
      }); 

    function loadDataTable(data){ 
     $("#recentSubscribers").dataTable().fnDestroy();  
     var oTable = $('#recentSubscribers').dataTable({ 
      "aaData" : JSON.parse(data.subscribers), 
      "processing": true, 
      "bPaginate": false, 
      "bFilter": false, 
      "bSort": false, 
      "bInfo": false, 
      "aoColumnDefs": [{ 
      "sTitle": "Subscriber ID", 
      "aTargets": [0] 
     }, { 
      "sTitle": "Install Location", 
      "aTargets": [1] 
     }, { 
      "sTitle": "Subscriber Name", 
      "aTargets": [2] 
     }, { 
      "aTargets": [0], 
      "mRender": function (data, type, full) { 
       return '<a style="text-decoration:none;" href="#" class="abc">' + data + '</a>'; 
      } 
     }], 
      "aoColumns": [{ 
      "mData": "code" 
     }, { 
      "mData": "acctNum" 
     }, { 
      "mData": "name" 
     }] 
      }); 

    }  

}) 
+0

Należy upewnić się, że kod, który zawiera to samo jest jak ryba (to nie) i ten, który używasz. Również w skrzypcach masz dwa aTargets [0], sprawdź: http://jsfiddle.net/gL0p0t42/ –

+0

Nie podajesz źródła, które faktycznie nazywa się "aDataSort". – Daniel

+0

Czy masz na myśli identyfikator tabeli html? Zająłem się tym. Pozwól mi spróbować z jednym celem. – swateek

Odpowiedz

2

Mam również ten problem, następujące zmiany rozwiązały mój problem.

$(document).ready(function() { 
    $('.datatable').dataTable({ 
      bSort: false, 
      aoColumns: [ { sWidth: "45%" }, { sWidth: "45%" }, { sWidth: "10%", bSearchable: false, bSortable: false } ], 
     "scrollY":  "200px", 
     "scrollCollapse": true, 
     "info":   true, 
     "paging":   true 
    }); 
}); 

tablica aoColumns opisuje szerokość każdej kolumny i jej sortable właściwości.

61

Ważne jest, aby Twój THEAD nie był pusty w tabeli. Jako dataTable należy podać liczbę kolumn oczekiwanych danych. Według danych powinno być

<table id="datatable"> 
    <thead> 
     <tr> 
      <th>Subscriber ID</th> 
      <th>Install Location</th> 
      <th>Subscriber Name</th> 
      <th>some data</th> 
     </tr> 
    </thead> 
</table> 
+17

Co się stanie, jeśli wymagać będzie skonfigurowania kolumn i liczby tych kolumn w środowisku wykonawczym? Jak mogę zaimplementować kod dla wyżej wymienionego wymagania? –

+0

Pomogło mi to rozwiązać problem braku danych. Pomogło mi to również w rozwiązaniu jednego z moich problemów w kwestii datatable, w którym napisałem "Sort": "false", a następnie było możliwe wyświetlenie listy w kolejności malejącej, która pochodzi od kontrolera jako 'Model.OrderByDescending (x => x .Akcja == 0) .ThenBy (x => x.Action) '. –

+1

Nie mogę cię upomnieć więcej niż raz, inaczej bym to zrobił !! –

17

Również ten problem, Tablica ta była poza zakresem:

order: [1, 'asc'], 
+0

Ten zawsze mnie dostaje. Czy istnieje sposób na domyślne ustawienie tablicy na 0, jeśli tablica jest poza zakresem? – JGreasley

+1

@JGreasley Możesz ustawić go jako pustą tablicę: order: [] – hogarth45

+0

W kolumnach min, gdzie 5 i i określałem 7 tutaj! Dzięki – aiffin

Powiązane problemy