2009-02-04 7 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 analyser la valeur NULL renvoyée à l'aide de la source de données YUI

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é.

Répondre

0

Assurez-vous d'abord que vous avez besoin de l'analyseur: YAHOO.util.DataSource.parseString pour les champs. Je n'ai pas vu votre structure JSON. Donc je ne peux pas commenter ça.

L'autre option consiste à utiliser un formateur personnalisé. Quelque chose comme l'extrait suivant fonctionnera.

var customFormatter = function(elCell, oRecord, oColumn, sData) { 
    elCell.innerHTML = ''; 
    try { 
     var strData = YAHOO.lang.JSON.parse(sData); 
     // set the elCell.innerHTML based on the strData 
    } catch { 
     // don't to anything 
    } 
} 

myDataSource.responseSchema = {fields:['Requirements', 'abc', 'xyz']}; 

var columnDescription = 
        [ 
         {key:'Requirements'}, 
         {key:'abc', 
         formatter: customFormatter 
         }, 
         {key:'xyz', 
         formatter: customFormatter 
         } 
        ]; 
Questions connexes