Как сделать, чтобы источник данных YUI анализировал нулевые значения в наборе данных? - PullRequest
1 голос
/ 04 февраля 2009

Я использую источник данных YUI и источник данных для визуализации данных в одном из моих проектов. Возвращенные данные имеют значение NULL, а источник данных YUI не может их проанализировать.

Ниже приведен код объявления источника данных и данных. Для удобства чтения я разделяю каждое из объявлений.

Объявление описания столбца

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

Это описание столбца устанавливается в функции ниже.

Декларация источника данных

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 и обнаружил, что анализатор строк не анализирует нулевые значения. Мне интересно, есть ли способ проанализировать эти данные. Нужно ли обрабатывать ответный анализ необработанных данных? Любые предложения приветствуются.

1 Ответ

0 голосов
/ 10 февраля 2009

Вам нужно создать свой собственный парсер?

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}

Для использования вашего нового парсера

...