Avertissement DataTables: paramètre inconnu demandé ‘0’ de la source de données pour la ligne ‘0’

Est-ce que quelqu’un sait s’il vous plaît, qu’est-ce qui ne va pas avec le fichier HTML très simple ci-dessous?

entrer la description de l'image ici

J’essaie juste d’utiliser un tableau d’objects comme source de données pour DataTables:

tests.html:

        var data = [ {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]}, {"Name":"NRB Boot","Result":"PASS","ExecutionTime":"00:00:50.5000000","Measurement":[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]}, {"Name":"NvMgrCommit","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]}, {"Name":"SyncNvToEFS","Result":"PASS","ExecutionTime":"00:00:01.2500000","Measurement":[]} ]; $(function() { var testsTable = $('#tests').dataTable({ bJQueryUI: true, aaData: data, aoColumns: [ { mData: 'Name' }, { mData: 'Result' }, { mData: 'ExecutionTime' } ] }); });    
Name Result ExecutionTime

MISE À JOUR: Ok, j’ai la réponse de l’auteur pour utiliser une nouvelle version de DataTables ou renommer mData en mDataProp

    Vous utilisez un tableau d’objects. Pouvez-vous utiliser un tableau à deux dimensions à la place?

    http://www.datatables.net/examples/data_sources/js_array.html

    Voir ce jsfiddle: http://jsfiddle.net/QhYse/

    J’ai utilisé un tableau comme celui-ci et ça a bien fonctionné:

     var data = [ ["UpdateBootProfile","PASS","00:00:00",[]] , ["NRB Boot","PASS","00:00:50.5000000",[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]] , ["NvMgrCommit","PASS","00:00:00",[]] , ["SyncNvToEFS","PASS","00:00:01.2500000",[]] ]; 

    Modifier pour inclure un tableau d’objects

    Il y a une solution possible à cette question: jQuery DataTables fnrender avec des objects

    Ce jsfiddle http://jsfiddle.net/j2C7j/ utilise un tableau d’objects. Pour ne pas avoir l’erreur, j’ai dû le remplir avec 3 valeurs vierges – moins que optimal, je sais. Vous pouvez trouver un meilleur moyen avec fnRender, merci de poster si vous le faites.

     var data = [ ["","","", {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]} ] ]; $(function() { var testsTable = $('#tests').dataTable({ bJQueryUI: true, aaData: data, aoColumns: [ { mData: 'Name', "fnRender": function( oObj ) { return oObj.aData[3].Name}}, { mData: 'Result' ,"fnRender": function( oObj ) { return oObj.aData[3].Result }}, { mData: 'ExecutionTime',"fnRender": function( oObj ) { return oObj.aData[3].ExecutionTime } } ] }); }); 

    Pour une erreur de valeur nulle ou non définie , ajoutez simplement cette ligne aux atsortingbuts ,"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]

    Exemple :

     oTable = $("#bigtable").dataTable({ "columnDefs": [{ "defaultContent": "-", "targets": "_all" }] }); 

    Cela m’a frappé pendant plus d’une heure.

    Si vous utilisez l’option dataSrc et l’option defs de colonne, assurez-vous qu’ils se trouvent aux emplacements appropriés. J’avais des colonnes nestedes dans les parameters ajax et j’ai perdu beaucoup de temps à le comprendre.

    C’est bon:

    bien

    Ce n’est pas bien:

    entrer la description de l'image ici

    Différence subtile, mais assez réelle pour provoquer la perte de cheveux.

    J’avais le même problème. En ce qui me concerne, il me manquait la virgule après la dernière colonne. 30 minutes de ma vie gaspillée, je ne reviendrai plus jamais!

    entrer la description de l'image ici

    Assurez-vous que les noms des colonnes sont les mêmes. Ils sont sensibles à la casse. Ici, dans mon cas, j’ai eu cette erreur lorsque les noms de colonne de mon modèle sont en majuscule et j’ai utilisé toutes les lettres minuscules dans les données de la requête ajax.

    Donc, j’ai résolu en faisant correspondre les noms de colonnes exactement de la même manière que les noms de modèles existants.

    Liaison de DataTable

     $("#Customers").DataTable({ ajax: { url: "/api/customers/", dataSrc: "" }, columns: [ { data: "Name", render: function (data, type, customer) { return "" + customer.Name + ""; } }, { data: "Name" }, { data: "Id", render: function (data) { return ""; } } ] }); 

    Méthode API Web:

      public IEnumerable GetCustomers() { return _context.Customers.ToList(); } 

    Mon modele:-

      public class Customer { public int Id { get; set; } [Required] [SsortingngLength(255)] public ssortingng Name { get; set; } [Display(Name="Date Of Birth")] public DateTime? BirthDate { get; set; } public bool isSubscribedToNewsLetter { get; set; } public MembershipType MembershipType { get; set; } [Display(Name="Membership Type")] [Required] public byte MembershipTypeId { get; set; } } 

    donc ici dans mon cas, iam peuplant datatable avec des colonnes (Nom, Nom, Id) .. iam dupliquant le nom de la deuxième colonne à tester.

    À partir du site Web DataTables:

    Chaque cellule de DataTables demande des données et, lorsque DataTables essaie d’obtenir des données pour une cellule et ne peut pas le faire, elle déclenche un avertissement vous indiquant que les données ne sont pas disponibles. Le message d’avertissement est le suivant:

    Avertissement DataTables: id de table = {id} – Paramètre inconnu demandé ‘ {parameter} ‘ pour la ligne {row-index}

    où:

    {id} est remplacé par l’identifiant DOM de la table qui a déclenché l’erreur

    {parameter} est le nom du paramètre de données demandé par DataTables

    {row-index} est l’index de ligne interne de DataTables pour le rwo qui a déclenché l’erreur.

    Donc, pour le décomposer, DataTables a demandé des données pour une ligne donnée, du {parameter} fourni {parameter} et il n’y a pas de données, ou il est null ou undefined .

    Voir cette note technique sur le site Web DataTables pour plus d’informations.

    Je suis confronté à ce problème parce que j’ai return keyword dans le custom rendering dans la Columns section

     columns: [ {.... 'data': function(row, type, val, meta) { if (row.LetterStatus) return '@CultureHelper.GetCurrentCulture()' == 'ar'? row.LetterStatus.NameInArabic: row.LetterStatus.NameInEnglish; else row.LetterStatusID.toSsortingng();// here is the problem because I messed the Return key keyword }, ...... } 

    le problème dans mon code est parce que j’ai messed le Return keyword dans la else clause

    alors je l’ai changé pour

     .... else return row.LetterStatusID.toSsortingng();// messed return keyword added ..... 

    Dans mon scénario étrange, j’avais une colonne différente qui ne renvoyait pas toujours une valeur dans la fonction “render”. return null résolu mon problème.

    C’est un cas très courant dans DataTables quand il est impossible de trouver le champ de requête défini dans la configuration de DataTable.
    Par exemple:

      "aoColumns": [{ mData: 'mobile', sWidth: "149px;" }, { mData: 'name', sWidth: "121px;" }, { mData: 'productName', sWidth: "116px;" } }]; 

    Ici, si DataTable ne reçoit pas les propriétés mentionnées ci-dessus. Il générera cet avertissement:

    Avertissement DataTables: paramètre inconnu demandé ‘0’ de la source de données pour la ligne ‘0’

    Pour surmonter cela, il vous suffit de définir une valeur par défaut dans “aoColumns”

    Par exemple:

      "aoColumns": [{ mData: 'mobile',sDefaultContent : '',sWidth: "149px;" }, { mData: 'name',sDefaultContent : '', sWidth: "121px;" }, { mData: 'productName',sDefaultContent : '', sWidth: "116px;" } }]; 

    sDefaultContent supprimera l’avertissement.
    Remarque: Cette propriété peut être modifiée en fonction de la version de dataTables que vous utilisez.

    Si vous utilisez knockout.bindings.dataTables.js vous pouvez modifier le fichier et remplacer cette ligne

     dataTable.fnAddData(unwrappedItems); 

    avec

     if (unwrappedItems.length > 0) { dataTable.fnAddData(unwrappedItems); } 

    Cela m’a aidé et j’espère que cela vous aidera.

    Si quelqu’un utilise les nouveaux DataTables (qui est génial) et que vous souhaitez utiliser un tableau d’objects, vous pouvez le faire facilement avec l’option columns. Reportez-vous au lien suivant pour un excellent exemple à ce sujet.

    DataTables avec un tableau d’objects

    Je me débattais avec cela depuis 2 jours et cela a résolu le problème. Je ne voulais pas passer aux tableaux multidimensionnels pour d’autres raisons de code, alors je cherchais une solution comme celle-ci.