Javascript YUI数据表排序不工作
您好,我正在使用aui datatable插件将数据库中的一些数据解析到一个表中,但是我想在我的列中添加一些基本排序。下面您可能会看到呈现数据表的函数“renderProducts”。此外,下面是一个正在传递到表呈现器中的示例列对象Javascript YUI数据表排序不工作,javascript,yui,yui-datatable,liferay-aui,Javascript,Yui,Yui Datatable,Liferay Aui,您好,我正在使用aui datatable插件将数据库中的一些数据解析到一个表中,但是我想在我的列中添加一些基本排序。下面您可能会看到呈现数据表的函数“renderProducts”。此外,下面是一个正在传递到表呈现器中的示例列对象 var API= (function(Y){ var settings = { serviceURL : null }; var getServiceAttribute = function( attribute ) {
var API= (function(Y){
var settings = {
serviceURL : null
};
var getServiceAttribute = function( attribute ) {
return '_openpimadmin_WAR_OpenTest_' + attribute;
}
var getServiceURL = function( service ) {
return settings.serviceURL + '&p_p_resource_id=' + service;
};
var service = function( service, dataSet, handlers ){
var serviceData = {};
var serviceHandlers = {
start : function(){},
success : function(){},
failure : function(){},
end : function(){}
};
for (prop in dataSet) {
serviceData[getServiceAttribute(prop)] = dataSet[prop];
}
for (prop in handlers) {
if ( serviceHandlers.hasOwnProperty(prop) && typeof handlers[prop] === 'function') {
serviceHandlers[prop] = handlers[prop];
}
}
Y.io(
getServiceURL( service ),
{
method : 'POST',
data : serviceData,
on : {
start : function( transactionID ) {
serviceHandlers.start(transactionID);
},
success : function( transactionID, response ) {
var parsed = Y.JSON.parse(response.responseText);
if (parsed.success === true){
serviceHandlers.success( transactionID, parsed );
} else {
console.log('Service [' + service + '] error: ' + parsed.error);
}
},
failure : function( transactionID, response ) {
serviceHandlers.failure( transactionID, response );
},
end : function( transactionID ) {
serviceHandlers.end( transactionID );
}
}
}
);
}
return {
services : {
getProducts : function( dataSet, handlers ){
dataSet = dataSet || {};
handlers = handlers || {};
service( 'getProducts', dataSet, handlers );
},
getProductsTableAttributeHeaders : function( dataSet, handlers) {
dataSet = dataSet || {};
handlers = handlers || {};
service( 'getProductsTableAttributeHeaders', dataSet, handlers );
},
},
views : {
renderProducts : function( el, columns, dataSet ) {
Y.one(el).get('childNodes').remove();
new Y.DataTable.Base({
columnset : columns,
recordset : dataSet,
width: '100%'
}).render(el);
}
},
get : function( prop ) {
return settings[prop];
},
set : function( options ) {
settings = Y.merge( settings, options );
}
};
})( YUI().use('node', 'io', 'aui-datatable', 'datatable-sort', function(Y){return Y;}) );
列对象:
Object {key: "name", label: "Όνομα", allowHTML: true, emptyCellValue: "<em>(not set)</em>", sortable: true}
Object{key:“name”,label:“μα”,allowHTML:true,emptyCellValue:“(未设置)”,sortable:true}
我面临的问题是,排序是看不到的,列似乎没有交互作用,用户无法对它们进行排序,尽管表被渲染得很好
先谢谢你
注:我是YUI()的新手。您需要确保为需要排序的列设置sortable:true
下面是一个带有排序功能的示例似乎这就是问题所在:
new Y.DataTable.Base({
columnset : columns,
recordset : dataSet,
width: '100%'
}).render(el);
应该是这样的:
new Y.DataTable({
columnset : columns,
recordset : dataSet,
width: '100%'
}).render(el);
我已经检查了原始帖子中的column对象。如果您在我提供的链接中观察到,当需要排序功能时,Y.DataTable.Base不被使用。您需要更改为与示例中的相同,即使用新的Y.DataTable({columns:nestedCols。。。