Повторитель данных, вложенный в GridView, не будет обновляться
У меня есть Repeater
вложенный внутри GridView
, На RowDataBound
событие для GridView
Я установил DataSource
(на основе одного из столбцов строки), а затем связать Repeater
, Это прекрасно работает для начальной загрузки, однако мне нужно иметь возможность добавлять новые элементы в Repeater
динамически.
Я добавляю элемент в DataSource
, сохранить его в ViewState
и где я обычно связываюсь с помощью вызова метода, я связываюсь с объектом, сохраненным в ViewState
вместо. DataSouce
отражает изменение, однако страница - нет.
Что мне не хватает? У меня точно такая же настройка на другой странице без вложенности, и она отлично работает.
if (ViewState["RepeaterObj"]!=null)
{
rpt.DataSource=(IList<DataTransferObject>)ViewState["RepeaterObj"];
}
else
{
rpt.DataSource = controller.GetObj(param);
rpt.DataBind();
}
3 ответа
Я закончил тем, что решил вопрос, отказавшись от использования ViewState
полностью, хотя я думал, что мой временный DataSource
будет потеряно через postback
это не было Я закончил тем, что пошел с классом variable
который работает отлично. Кажется, я не совсем понял, что происходит во время postback
,
Прежде всего, вы не должны хранить источник данных в ViewState. Это самое худшее место, которое вы могли бы выразить.
Что касается вашей проблемы, я бы предложил либо повторно связать GridView при добавлении новых элементов в ретранслятор, либо найти ретранслятор в случае сохранения новой записи и связать ее там.
Я думаю, что проблема в том, что вы не привязываете Repeater
, Вы говорите, что изменяете то, как вы связываете взгляд на ViewState
объект, но вы на самом деле вызывает Bind
происходить? Похоже, что вы не, и страница просто перезагружается с текущими данными, сохраненными с помощью элемента управления ViewState
,
Убедитесь, что вы звоните Repeaters
явное связывание события, чтобы убедиться, что оно получает отскок.
РЕДАКТИРОВАТЬ: Я подозреваю, что это может быть что-то делать, где вам может понадобиться, чтобы привязать GridView
и не только Repeater
,