2009-02-04 6 views
1

J'utilise YUI datatable et datasource pour rendre des données dans un de mes projets. Les données retournées se trouvent être NULL et la source de données YUI est incapable de l'analyser. Ci-dessous le code de déclaration de datasource et datatable. Pour des raisons de lisibilité, je sépare chacune des déclarations.Comment faire pour que la source de données YUI analyse les valeurs NULL dans l'ensemble de données?

Description des colonnes déclaration

  var columnDescription = 
      [ 
       {key:'Requirements'}, 
       {key:'abc'}, 
       {key:'xyz'} 
      ]; 

Ce columnDescription est situé dans la fonction ci-dessous.

Déclaration DataSource

var dataSrcSample = new YAHOO.util.FunctionDataSource(getDataGrid); 
    myDataSource.connMethodPost = true; 
    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 
        myDataSource.responseSchema = { 
        fields:['Requirements', 
    {key:'abc',parser:YAHOO.util.DataSource.parseString}, 
    {key:'xyz',parser:YAHOO.util.DataSource.parseString}] 
         }; 

fonction getDataGrid fait l'appel à côté serveur pour obtenir les données à partir du serveur. Voici la définition de la table elle-même.

 YAHOO.example.sampleTable = function() 
     { 
          var columnDesc=columnDescription; 
      var myDataSource = dataSrcSample; 
      var oConfigs = 
      { 
       width:'100%' 
      }; 

var myDataTable = new YAHOO.widget.DataTable("tableContainerDiv", 
    columnDesc, 
    myDataSource, 
    oConfigs); 
       }(); 

tableContainerDiv est déclaré dans la page html. C'est le conteneur div. Fonction qui récupère les données JSON du serveur.

function getDataGrid() 
{ 
     //calls backend and gets the data 
} 

La fonction retourne une chaîne json qui a des valeurs nulles. Le constructeur de la source de données se plaint des problèmes suivants.

  • ERROR_DATAINVALID
  • ERROR_DATANULL

J'ai vérifié le Yui documentation et a constaté que l'analyseur de chaîne ne parse pas les valeurs NULL. Je me demande s'il existe un moyen d'analyser ces données. Dois-je gérer handleResponse analyser les données brutes? Toutes les suggestions ont apprécié.

+0

en double exacte de . (Pas assez de rep pour voter pour la fermeture ou pour éditer.) –

+0

Oui, je suis d'accord. Mais je suis nouveau sur stackoverflow et j'en ai fait un wiki communautaire. Je voulais que ce soit une question. Il n'y avait aucun moyen de revenir à la question –

Répondre

0

Vous devez peut-être créer votre propre analyseur?

function parseNull(value) { 
    // This exact logic may be incorrect, depends on what you get for value in the null case 
    if (value=='null') { 
     return null; 
    } 
    YAHOO.util.DataSource.parseString(value); 
} 

Ensuite, vous pouvez préciser:

{key:'abc',parser:parseNull} 

Pour utiliser votre nouvel analyseur

Questions connexes