2010-04-14 4 views
1

Je ne comprends pas ce que je fais mal ici! Je continue à recevoir une erreur de données. Mais j'ai validé le JSON et ça va ...YUI DataTable avec JSON et le filtrage côté client Erreur de données

Voici le javascript de l'exemple YUI Datatble (légèrement modifié).



<pre class="prettyprint"><code> 

<script type="text/javascript"> 
YAHOO.util.Event.addListener(window, "load", function() { 
    //var Ex = YAHOO.namespace('example'); 

    var dataSource = new YAHOO.util.DataSource("jsondb/json_meta_proxy.html",{ 
     responseType : YAHOO.util.DataSource.TYPE_JSON, 
     responseSchema : { 
      resultsList: "records", 
      fields: [ 
          {key:"idprojet"}, 
          {key:"nomprojet"} 
        ], 
        metaFields: { 
        totalRecords: "totalRecords" 
        } 
     }, 
     doBeforeCallback : function (req,raw,res,cb) { 
      // This is the filter function 
      var data  = res.results || [], 
       filtered = [], 
       i,l; 

      if (req) { 
       req = req.toLowerCase(); 
       for (i = 0, l = data.length; i < l; ++i) { 
        if (!data[i].state.toLowerCase().indexOf(req)) { 
         filtered.push(data[i]); 
        } 
       } 
       res.results = filtered; 
      } 

      return res; 
     } 
    }); 

    var cols = [ 
     {key:"idprojet"}, 
      {key:"nomprojet"} 
    ]; 

    var paginateur = new YAHOO.widget.Paginator({ 
     rowsPerPage : 25, 
     pageLinks  : 10 
    }); 

    var conf = { 
     paginator : paginateur, 
     sortedBy: {key:'idprojet', dir:YAHOO.widget.DataTable.CLASS_ASC} 
    }; 

    var dataTable = new YAHOO.widget.DataTable('tbl',cols,dataSource,conf); 

    var filterTimeout = null; 
    var updateFilter = function() { 
     // Reset timeout 
     filterTimeout = null; 

     // Reset sort 
     var state = dataTable.getState(); 
      state.sortedBy = {key:'idprojet', dir:YAHOO.widget.DataTable.CLASS_ASC}; 

     // Get filtered data 
     dataSource.sendRequest(YAHOO.util.Dom.get('filter').value,{ 
      success : dataTable.onDataReturnInitializeTable, 
      failure : dataTable.onDataReturnInitializeTable, 
      scope : dataTable, 
      argument: idprojet 
     }); 
    }; 

    YAHOO.util.Event.on('filter','keyup',function (e) { 
     clearTimeout(filterTimeout); 
     setTimeout(updateFilter,600); 
    }); 
}); 
</script> 

et voici les données JSON dans le fichier "jsondb/json_meta_proxy.html"



    { 
    "recordsReturned": 1, 
    "totalRecords": 1, 
    "startIndex": 0, 
    "sort": "idprojet", 
    "dir": "asc", 
    "records": [ 
     { 
      "idprojet": "11256", 
      "nomprojet": "" 
     } 
    ] 
} 

Un grand merci pour votre aide !!!

Répondre

0

Si vous n'obtenez pas de réponse sur StackOverflow, vous pouvez essayer de publier votre question sur les forums de développeurs YUI: http://yuilibrary.com/forum. De nombreux experts de YUI, y compris les développeurs DataTable les plus expérimentés, s'y tiennent.

-Eric

+0

@Eric Miraglia Bon travail chez YUI Team. Bien que j'utilise beaucoup les widgets YUI, votre "réponse" ressemble à un commentaire. Voir mon travail à propos de ** simple et double-clic ** en utilisant YUI DATATABLE http://jsbin.com/ideha Cela fonctionne bien –

2

changeant TYPE_JSARRAY résolu le problème ...

Merci pour vos commentaires Eric! Je suis allé à ce forum et c'est en effet l'endroit pour les questions datatable.

Questions connexes