如何使YUI数据源解析数据集中的空值?

时间:2009-02-04 01:27:37

标签: javascript ajax yui datasource yui-datatable

我正在使用YUI数据表和数据源来渲染我的一个项目中的数据。返回的数据恰好为NULL,YUI数据源无法解析它。

下面是datasource和datatable的声明代码。为了便于阅读,我正在分离每个声明。

列描述声明

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

此columnDescription在以下函数中设置。

数据源声明

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}]
};

getDataGrid 函数调用服务器端从服务器获取数据。 下面是表定义本身。

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 在html页面中声明。这是容器div。 从服务器获取JSON数据的函数。

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

该函数返回具有一些空值的json字符串。数据源构造函数抱怨以下问题。

  • ERROR_DATAINVALID
  • ERROR_DATANULL

我检查了yui documentation,发现字符串解析器不解析空值。我想知道是否有任何方法来解析这些数据。我是否必须处理响应解析原始数据?任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可能需要创建自己的解析器吗?

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);
}

然后你可以指定:

{key:'abc',parser:parseNull}

使用新的解析器