источник данных telerik radgrid null после обратной передачи - PullRequest
1 голос
/ 14 июля 2010

После назначения RadGrid.DataSource для запроса Linq при обратной передаче DataSource равно нулю.Можно ли получить данные, используемые RadGrid для заполнения сетки после применения всех фильтров и сортировки?

Редактировать

Единственные доступные методы для сбора данных помечаются как внутренние.Я думаю, что я просто сейчас сдамся.Если я найду решение позже, я опубликую свой ответ здесь.

Ответы [ 3 ]

4 голосов
/ 14 июля 2010

Это не телерик.Для всех элементов управления свойство DataSource всегда будет иметь значение NULL, если вы не будете явно назначать и привязывать его заново при каждой обратной передаче.

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

РЕДАКТИРОВАТЬ:
Причинаизбегать хранения такого вида информации в сеансе или кэше, потому что он большой и для каждого пользователя.Если у вас неограниченная память на вашем сервере, то непременно храните наборы данных повсеместно для каждого пользователя в сеансе и кэше, но большую часть времени вы хотите сохранить небольшой объем памяти для каждого пользователя.

Хранение этой информации в ViewState в значительной степени тратится впустую, потому что вы будете когда-либо показывать клиенту только небольшое подмножество строк, но дадите ему ОГРОМНУЮ загрузку через их раздутый ViewState.необходимо выполнить обработку страниц, сортировку и фильтрацию на уровне доступа к данным, чтобы вы могли получить только те строки, которые вы действительно хотите показать пользователю.

3 голосов
/ 14 июля 2010

Telerik имеет обработчик событий NeedDataSource на своих элементах управления.Установите источник данных там.

protected void radGridVesselSpecs_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    if (this.Vessel == null)
        return;

    this.radGridVesselSpecs.DataSource = this.Vessel.Specifications;
}
0 голосов
/ 14 июля 2010

У вас есть два варианта, один для сохранения объекта источника данных в вашем сеансе.Или вы можете использовать любой DataSource Control и перепривязать его во время обратной отправки.

...