telerik radGrid - сохранить состояние клиента при сортировке / пейджинге / фильтре - PullRequest
4 голосов
/ 18 мая 2011

Даже в этом примере Ajax мне очень нравится внешний вид, когда когда-либо сортируется сетка верхнего уровня, «состояние» того, что вы делали, «исчезает»

Например,

Откройте строку первого лица (Нэнси Даволио), чтобы увидеть сетку продаж

Сортировка по сумме заказа в сетке продаж

Сортировать по дате рождения в сетке верхнего уровня

Нэнси Давойло теперь должна быть второй. Откройте ее ряд.

Сетка продаж больше не сортируется по сумме заказа

Это может показаться банальным, или что я привередлив; Однако:

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

Кажется, что даже пейджинг разрушает это.

Желаемое поведение было бы для сортировки и подкачки страниц не только "на первый взгляд", чтобы быть выполненным на стороне клиента, потому что он использует ajax-запрос, но на самом деле выполняется на стороне клиента. Это означает, что фактические строки сетки буквально сортируются (фильтруются, разбиваются на страницы и т. Д.) На стороне клиента, поэтому любые изменения на стороне клиента, такие как добавление текста в текстовое поле, добавление класса css к объекту, [или в более сложном Пример добавления ссылки на объект javascript к объекту через Jquery: $("#div1").data("object",someObject) сохранится после сортировки, разбиения на страницы и фильтрации.

Есть ли способ сделать это?

Я делаю то, что я хочу сделать ясно? Если нет, я с удовольствием уточню.

Дополнительные примечания: я думаю, что снижение производительности на стороне клиента было бы минимальным для выполнения чего-то подобного, если не было очень большого количества строк. На самом деле на сервере было бы намного меньше работы по воссозданию всех записей, повторных обращений к серверу / базе данных, и, как в моем примере вверху, подстраницы нужно было создавать только один раз, а не дважды.

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

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

Для вашего случая у вас может быть два варианта:

0 голосов
/ 19 мая 2011

Посмотрите на свойство HierarchyLoadMode в MasterTableView. Демонстрация, на которую вы ссылаетесь, использует HierarchyLoadMode.ServerOnDemand, что, согласно документации Telerik , означает, что ViewState поддерживает только состояние видимых элементов. Поэтому, когда сетка сведений свернута, вы потеряете ее состояние (например, порядок сортировки, номер страницы и т. Д.).

Есть и другие режимы. Вы можете выбрать HierarchyLoadMode.ServerBind, который поддерживает ViewState для всех таблиц подробностей, но для раскрытия таблицы подробностей требуется PostBack. HierarchyLoadMode.Client визуализирует MasterTableView, а все подробные таблицы и элементы развертываются / сворачиваются на клиенте - PostBack не требуется. Любой из этих режимов должен также поддерживать порядок сортировки и другое состояние, связанное с таблицами сведений.

Надеюсь, это поможет ответить на ваш вопрос.

...