Как проанализировать значение NULL, возвращенное с использованием источника данных YUI - PullRequest
2 голосов
/ 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 голосов
/ 09 апреля 2009

Сначала убедитесь, что вам нужен анализатор: YAHOO.util.DataSource.parseString для полей. Я не видел вашу структуру JSON. Поэтому я не могу комментировать это.

Другой вариант - использовать пользовательский форматер. Будет работать что-то вроде следующего фрагмента.

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