2

プロジェクトの 1 つでデータをレンダリングするために、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
}

関数は、いくつかの null 値を持つ json 文字列を返しています。データソース コンストラクターは、次の問題を訴えています。

  • ERROR_DATAINVALID
  • ERROR_DATANULL

yui のドキュメントを確認したところ、文字列パーサーが null 値を解析しないことがわかりました。このデータを解析する方法があるかどうか疑問に思っています。生データを処理する必要がありますか? 任意の提案をいただければ幸いです。

4

1 に答える 1

0

まず、フィールドにparser: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
                        }
                     ];
于 2009-04-09T18:12:00.937 に答える