2010-12-07 2 views
0

Мы используем много таблиц данных YUI для отображения данных, а вместо использования встроенной разбивки на страницы мы сделали свое, чтобы мы могли разбивать страницы на сервер используя AJAX без загрузки всего набора данных (что часто бывает огромным).YUI Datatable - вызов произвольной функции * один раз * по сортировке

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

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

Есть, вероятно, много хакерских способов, я мог бы это сделать, но что такое «самый приятный» способ обойти это?

ответ

0

В идеале, вы должны сортировать на стороне сервера.

при создании DataTable, один из вариантов конфигурации является GenerateRequest (см этого примера: http://developer.yahoo.com/yui/examples/datatable/dt_bhm.html)

GenerateRequest является означает, что функция, которая генерирует URL, который возвращает корректные данные, установленные с которой для заполнения Таблица. У вас, вероятно, есть это.

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

0

Почему бы не написать пользовательскую функцию и закрыть переменную, которая отслеживает, была ли она вызвана?

var hasBeenCalled = false; 
function mySortFunction(){ 
    if(!hasBeenCalled){ 
     // do something 
     hasBeenCalled = true; 
    } 
} 

Затем замените функцию sortFunction.

Смежные вопросы