Получить полный набор данных, отсортированный с помощью таблицы данных YUI с нумерацией страниц - PullRequest
1 голос
/ 07 января 2010

Надеюсь, я достаточно подробно опишу свою проблему ... вот так:

У меня есть таблица данных YUI, я получаю набор записей на стороне сервера через JSON, а затем заполняю данные.

Пользователи могут нажимать на заголовки, чтобы отсортировать данные в трех из 6 столбцов (которые используют настраиваемую функцию сортировки для каждого столбца). Сортировка выполняется на стороне клиента.

Когда пользователь сортирует данные, мне нужно иметь возможность получить полный список значений из одного из отображаемых столбцов. Мне нужны все доступные данные, а не только то, что отображается на странице. Данные, скрытые через нумерацию страниц, должны быть включены.

Есть идеи? Я пробовал методы handleDataReturnPayload и doBeforeLoadData объекта DataTable, но оба дают исходные несортированные данные.

Я действительно застрял здесь, и у меня есть клиент, в зависимости от функции, которая зависит от того, как я получу этот отсортированный список.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Satyam, на форумах YUI ответил на мой вопрос отлично .

Данные на самом деле хранятся в RecordSet. В любое время вы можете пойти и посмотрите на это, и оно будет отсортировано как отображается на экране, но это будет иметь все данные, показанные или нет.

Метод getRecordset () даст вам ссылка на него, и тогда вы можете зациклить через свои записи.

Вы можете прослушать columnSortEvent чтобы получить уведомление, произошла сортировка.

Я только что подписался на событие columnSortEvent и перебрал массив, возвращенный функцией datatable.getRecordSet (). GetRecords ().

0 голосов
/ 02 февраля 2010

Я наткнулся на этот вопрос в поисках информации о том, как извлечь информацию из набора данных, который НЕ отображался в таблице данных. Если вы поместите скрытые данные в источник данных перед любым полем, которое хотите отобразить, оно будет отображаться пустым, но если вы поместите его после последнего поля, которое будет отображено (как определено объектом столбцов), то они не сделать, но все равно быть доступным через запись).

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'); });
0 голосов
/ 07 января 2010

Я бы рекомендовал опубликовать это на форумах YUI - http://yuilibrary.com/forum/ - это отличное место для получения поддержки по вопросам DataTable.

...