YUI Datatable - вызывать произвольную функцию * один раз * при сортировке - PullRequest
0 голосов
/ 07 декабря 2010

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

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

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

Вероятно, есть много хакерских способов, которыми я мог бы это сделать, но какой самый "хороший" способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

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

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

Затем замените sortFunction этим.

0 голосов
/ 08 декабря 2010

В идеале вы бы сортировали на стороне сервера.

при создании таблицы данных одним из параметров конфигурации является generateRequest (см. Этот пример: http://developer.yahoo.com/yui/examples/datatable/dt_bhm.html)

generateRequest - это функция, которая генерирует URL, который возвращаетправильный набор данных для заполнения таблицы.Вы, вероятно, имеете это.

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

...