我希望我能充分描述我的问题..这里有:
我有一个YUI数据表,通过JSON获取服务器端记录集,然后填充数据。
用户可以单击标题对6列中的3列中的数据进行排序(对每列使用自定义排序功能)。排序是在客户端完成的。
当用户对数据进行排序时,我需要能够从显示的其中一列获得完整的值列表。我需要所有可用的数据,而不仅仅是为页面呈现的内容。必须包含通过分页隐藏的数据。
有什么想法吗?我已经尝试了DataTable的handleDataReturnPayload和doBeforeLoadData方法,但都提供了原始的未排序数据。
我真的被困在这里,而且我有一个客户端取决于依赖于我获得这个排序列表的功能。
提前致谢。
答案 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'); });