1

YUIデータテーブルとデータソースを使用して、プロジェクトの1つでデータをレンダリングしています。返されたデータはたまたま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値を解析しないことがわかりました。このデータを解析する方法はないかと思います。生データを解析するためにhandleResponseを実行する必要がありますか?任意の提案をいただければ幸いです。

4

1 に答える 1

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}

新しいパーサーを使用するには

于 2009-02-10T06:58:10.043 に答える