Проблема расширения jQuery TableSorter с несколькими кликами? - PullRequest
0 голосов
/ 24 февраля 2009

Хорошо, у меня есть таблица, созданная GridView, и к ней прикреплен сортировщик таблиц, он работает просто отлично.

Затем я поместил его в панель обновлений и добавил код для повторной привязки при обратной передаче, вот мой сценарий:

function loadEvents() { $("table[id$='gv']").tablesorter(); }
$(document).ready(function() { loadEvents(); });
function reBind() {
    if (Sys.WebForms.PageRequestManager) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(function() { loadEvents(); });
    }
}

Что отлично работает, загружаю gridview, сортировка работает.

  • Я нажимаю кнопку, которая отправляет сообщения назад, она отлично работает.
  • Я нажимаю снова и первый щелчок работает для сортировки, сортировки, но он застревает - там - я могу изменить столбцы, но он никогда не будет сортироваться? Но тогда ...
  • Я нажимаю еще раз, и он отлично работает

Это продолжается, работает каждый клик ... есть идеи?

1 Ответ

0 голосов
/ 24 февраля 2009

Ваша проблема звучит как проблема на стороне сервера - сортировка работает только после того, как таблица была связана в том же запросе. В противном случае событие, связанное с сортировкой, не сможет найти ничего.

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

Этот тип проблемы является общей проблемой ужасной модели событий страницы .Net.

Самое простое исправление - убедиться, что ваша таблица восстанавливается при обратной передаче ajax после загрузки viewstate, но до запуска событий, затем снова получите данные после того, как событие сработало. Проблема в том, что тогда у тебя есть данные дважды.

Лучшее решение - избегать использования обработчиков событий .Net в любых динамических элементах страницы.

Эти типы проблем с моделью событий страницы .Net являются одной из причин, по которой так много интереса к MVC.

...