私は作成したWebサービスを介して返されたいくつかの統計情報の基本的なクライアントサイドソートを作成するためにYUIデータテーブルを使用しています。 YUIのajaxデータソースを理解したくないので、データをjquery経由で読み込み、addRow()メソッドを使ってデータを読み込んでいます。問題は、すべてのデータが適切にソートされていないことです。文字列フィールドはランダムな順序のようで、数値/浮動小数点の列は文字列としてソートされているようです(7は635の上に表示されます)。次のようにYUI DataTableソート
初期テーブル定義は、次のとおりです。
var myColumnDefs = [
{key:"appname",label:"Application Name", sortable:true},
{key:"membercount",label:"Member Count",formatter:YAHOO.widget.DataTable.formatNumber,sortable:true},
{key:"loggedin",label:"Logged In",formatter:YAHOO.widget.DataTable.formatNumber,sortable:true},
{key:"peakoccupance",label:"Peak Occupance",formatter:YAHOO.widget.DataTable.formatNumber,sortable:true},
{key:"averageoccupance",label:"Average Occupance",formatter:YAHOO.widget.DataTable.formatFloat,sortable:true}
];
this.myDataSource = new YAHOO.util.DataSource([]);
this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
this.myDataSource.responseSchema = {
fields: [{key:"appname", parser:YAHOO.util.DataSourceBase.parseString},
{key:"membercount", parser:YAHOO.util.DataSourceBase.parseNumber},
{key:"loggedin", parser:YAHOO.util.DataSourceBase.parseNumber},
{key:"peakoccupance", parser:YAHOO.util.DataSourceBase.parseNumber},
{key:"averageoccupance", parser:YAHOO.util.DataSourceBase.parseNumber}
]
};
this.myDataTable = new YAHOO.widget.DataTable("markup", myColumnDefs, this.myDataSource,
{sortedBy:{key:"membercount",dir:"desc"}}
);
データは次のようにロードされます
function xmlCallback(xml){
if($(xml).find('memberCount').text() != "0"){
var appName = $(xml).find('appname').text();
var appID = $(xml).find('appid').text();
var memberCount = $(xml).find('memberCount').text();
var zoneOccupance = $(xml).find('zoneOccupance').text();
var peakOccupance = $(xml).find('peakOccupance').text();
var averageOccupance = $(xml).find('averageOccupance').text();
console.log(appName+" loaded...");
if(memberCount != "0"){
var allData = {
row: count,
appname: appName,
membercount: memberCount,
loggedin: zoneOccupance,
peakoccupance: peakOccupance,
averageoccupance: averageOccupance
};
sococo.myDataTable.addRow(allData, count);
count++;
$("appsloaded").html(count);
}
else{
appCount--;
$("totalapps").html(appCount);
}
}
}
すべてが移入され、私はちょうどシテソート順を取得します。私はここで何を忘れていますか?
おかげで、オーケー ジョシュ
。 sortedByを使用してデータテーブルを作成すると、データがすでにソートされていることがYUIに通知され、将来のソートのためにそのソート順を維持する必要があります。 –