2016-11-21 2 views
0

J'ai une date que je souhaite employer le rendu defer sur, je ne suis pas sûr de ce que le problème est, ma méthode de contrôleur renvoie un tableau d'objets de json. Voir le code ci-dessous.Comment est-ce que j'utilise la fonction de différer le rendu avec ma datable

** configuration Datatable **

Ceci est appelé lorsque la page est chargée.

 var $dtTable = $("#tblPlayer"); 
     $dtTable.dataTable({ 
      bFilter: false, 
      pageLength: 10, 
      paging: true, 
      autoWidth: true, 
      columns: 
      [ 
       null, 
       { "orderDataType": "dom-text", type: "string" }, 
       { "orderDataType": "dom-text", type: "string" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       null, 
       null, 
       null 
      ], 
      "ajax": "Player/GetSetPlayers", 
      "deferRender": true 
     }); 

méthodes de contrôleur

public object[] GetSetPlayers() 
    { 
     var players = GetPlayers(); 

     _players = new object[players.Count]; 

     for (var i = 0; i < players.Count; i++) 
     { 
      _players[i] = players[i]; 
     } 
     return _players; 
    } 

GetSetPlayers() retourne un tableau d'objets JSON, le résultat ci-dessous est un exampel de ce que l'indice 0 et 1 contiendra.

Réponse

[ 
    { 
     "product":25000, 
     "rank":1, 
     "dirty_money":25000, 
     "id":"b4b41b18edbb49b9ae80be5e768b6b80", 
     "name":"Dan", 
     "ban_status":0, 
     "edit":"<a href='/support/player_gamedata/b4b41b18edbb49b9ae80be5e768b6b80/game' class='btn'><i class='icon-folder-close'></i></a>", 
     "credit":30, 
     "clean_money":20000, 
     "ban":"<a href='/support/ban_player/by_id/b4b41b18edbb49b9ae80be5e768b6b80/' class='btn'><i class='icon-remove'></i></a>", 
     "supplies":25000 
    }, 
    { 
     "product":25000, 
     "rank":1, 
     "dirty_money":25000, 
     "id":"3cac6e366170458686021eaa77ac4d6d", 
     "name":"Dan", 
     "ban_status":0, 
     "edit":"<a href='/support/player_gamedata/3cac6e366170458686021eaa77ac4d6d/game' class='btn'><i class='icon-folder-close'></i></a>", 
     "credit":30, 
     "clean_money":20000, 
     "ban":"<a href='/support/ban_player/by_id/3cac6e366170458686021eaa77ac4d6d/' class='btn'><i class='icon-remove'></i></a>", 
     "supplies":25000 
    } 
] 

Répondre

0

Je pense que vous devez spécifier un attribut « données » sur chaque colonne qui doit être rempli à partir des données retournées. Sinon, il ne sait pas quel attribut de l'objet json va à chaque colonne. Si vous définissiez vos données sous la forme d'un tableau de tableaux au lieu d'un tableau d'objets, cela ne serait pas nécessaire.

De plus, vous ne spécifiez pas une option « dataSrc » qui est pas nécessaire, mais si elle n'est pas réglé je crois qu'il attend le retour à JSON être de la forme:

{ 
    data: [ {...}, {...} ] 
} 

Il serait être utile si vous pouviez ajouter la réponse brute à la requête ajax.

EDIT1:

Ok, donc revérifié et oui il ne veut un tableau d'objet assigné à l'attribut « données » sur l'objet JSON afin que vous puissiez faire quelque chose comme ça pour résoudre ce problème sans avoir à rien modifier sur le serveur. Il suffit de changer votre option ajax pour cela:

Donc, vous serez probablement bien une fois que vous faites les deux correctifs ci-dessus.

+0

J'ai mis à jour ma question avec la réponse –

+0

@ife labolz Avez-vous essayé d'exécuter ceci avec l'attribut "data" défini sur chacune des colonnes qui vont avoir des données? C'est juste "data: 'jsonAttrName',". – Adrian