1

我希望我足够描述我的问题..这里是:

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

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

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

有任何想法吗?我已经尝试过 DataTable 的 handleDataReturnPayload 和 doBeforeLoadData 方法,但都给出了原始的、未排序的数据。

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

提前致谢。

4

3 回答 3

2

Satyam,在YUI 论坛上完美地回答了我的问题。

数据实际上存储在 RecordSet 中。任何时候你都可以去查看它,它会按照屏幕上的顺序排列,但它会包含所有的数据,无论是否显示。

方法 getRecordset() 将为您提供对它的引用,然后您可以遍历它的记录。

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

我刚刚订阅了 columnSortEvent 事件并遍历了 datatable.getRecordSet().getRecords() 返回的数组。

于 2010-01-07T15:48:46.950 回答
0

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

于 2010-01-07T07:07:28.453 回答
0

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

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'); });
于 2010-02-01T22:08:49.530 回答