내가 만든 웹 서비스를 통해 반환되는 일부 통계에 대한 기본 클라이언트 측 정렬을 만들려면 YUI 데이터 테이블을 사용하고 있습니다. 유이의 아약스 데이터 소스를 알아 내고 싶지 않으므로 jQuery와 addRow()를 통해 데이터를로드하고 있습니다. 문제는 모든 데이터가 올바르게 정렬되지 않는다는 것입니다. 문자열 필드는 임의의 순서로 보이며 숫자/float 열은 문자열로 정렬되는 것 같습니다 (7은 635 위에 나타남). 다음과 같이YUI DataTable Sorting
초기 테이블 정의는 다음과 같습니다
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에 알리고 이후 정렬을 위해 정렬 순서를 유지해야합니다. –