Javascript YUI数据表排序不工作

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 ) {

您好,我正在使用aui datatable插件将数据库中的一些数据解析到一个表中,但是我想在我的列中添加一些基本排序。下面您可能会看到呈现数据表的函数“renderProducts”。此外,下面是一个正在传递到表呈现器中的示例列对象

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。。。