获取完整数据集,使用带有分页的YUI数据表进行排序

时间:2010-01-07 00:28:53

标签: javascript yui yui-datatable yui-datasource

我希望我能充分描述我的问题..这里有:

我有一个YUI数据表,通过JSON获取服务器端记录集,然后填充数据。

用户可以单击标题对6列中的3列中的数据进行排序(对每列使用自定义排序功能)。排序是在客户端完成的。

当用户对数据进行排序时,我需要能够从显示的其中一列获得完整的值列表。我需要所有可用的数据,而不仅仅是为页面呈现的内容。必须包含通过分页隐藏的数据。

有什么想法吗?我已经尝试了DataTable的handleDataReturnPayload和doBeforeLoadData方法,但都提供了原始的未排序数据。

我真的被困在这里,而且我有一个客户端取决于依赖于我获得这个排序列表的功能。

提前致谢。

3 个答案:

答案 0 :(得分:3)

Satyam,在YUI Forums处回答了我的问题完美

  

数据实际存储在   记录集。在任何时候你都可以去   看看它,它将被分类为   显示在屏幕上,但它会有   所有数据,无论是否显示。

     

方法getRecordset()会给你一个   引用它,然后你可以循环   通过它的记录。

     

您可以收听columnSortEvent   被通知已经发生了排序。

我刚订阅了columnSortEvent事件并循环访问了datatable.getRecordSet()返回的数组.getRecords()。

答案 1 :(得分:0)

我建议将其发布到YUI论坛 - http://yuilibrary.com/forum/ - 这是获得DataTable问题支持的好地方。

答案 2 :(得分:0)

我偶然发现了这个问题,寻找有关如何从未在数据表中显示的数据集中检索信息的信息。如果您在要显示的任何字段之前将隐藏数据放在数据源中,它将呈现为空白,但如果您将它放在将要呈现的最后一个字段之后(由列对象定义),那么它们将不会渲染但仍可通过记录访问。)

var columns = [
    {key:"Whatchamacallits", children:[
        {key:"name" },
        {key:"price" }
    ]}
];
var ds = new YAHOO.util.DataSource('index.php...');
oDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
oDataSource.responseSchema = {
    fields:["name","price","id"]
};
var dt = new YAHOO.widget.DataTable("dt-id", columns, ds, {});
dt.subscribe("rowClickEvent", dt.onEventSelectRow);
dt.subscribe("rowSelectEvent", function(p){ alert(p.getData('id'); });