Как динамически обновить элемент управления ретранслятора с привязкой к данным .NET - PullRequest
7 голосов
/ 21 января 2009

У меня есть .NET repeater элемент управления, который data-bound для списка. Как часть Item Collection повторителя, у меня есть «Кнопка удаления», которая эффективно удаляет этот текущий элемент списка.

Это работает, в коде позади я могу успешно удалить элемент из datasource Повторителя .

Моя проблема заключается в следующем : , когда я сбрасываю обновленный datasource и снова вызываю MyRepeater.DataBind(), интерфейс Repeater не обновляется с удаленным элементом.

Я ищу событие для существенной перерисовки или обновления Повторителя на основе обновленного Списка. Спасибо за любые указатели или примеры.

Ответы [ 5 ]

4 голосов
/ 21 января 2009

Вам необходимо вызвать метод «DataBind» для вашего источника данных, затем вызвать «DataBind» для вашего элемента управления Repeater.

1 голос
/ 26 декабря 2014

Я столкнулся с чем-то подобным с Repeater Control и источником DataTable.

В DataTable не было метода Refresh, но вызов DataTable.EnableDynamicData (typeof (DataTable)) при начальной загрузке страницы решил проблему.

1 голос
/ 21 января 2009

Используете ли вы обновленный источник данных?

Если вы устанавливаете источник данных в выделенном коде, вам нужно установить его с обновленными данными, а затем вызвать метод DataBind.

0 голосов
/ 29 января 2009

У меня была похожая ситуация ... повторитель привязан к xmlDataSource, оба внутри UpdatePanel. Я хотел, чтобы пользователь вводил одно имя за раз, а затем нажимал кнопку «Добавить», чтобы обновить список в повторителе.

Я установил «EnableViewState» в False на ретрансляторе и в xmlDataSource, а также «EnableCaching» в xmlDataSource также в False. Я установил свойство Data в xmlDataSource, называемое DataBind для xmlDataSource, установил свойство DataSourceID ретранслятора, а затем вызвал DataBind для ретранслятора. Может быть, это было излишним ... но это сработало. Может быть, это поможет.

ОБНОВЛЕНИЕ: я обнаружил, что, установив EnableViewState в False на элементе управления повторителем, мое событие ItemCommand не будет запущено. Но я думаю, что вам нужно только установить EnableViewState / EnableCaching в False для источника данных ... Я вернул для параметра EnableViewState значение True для ретранслятора, и теперь все выглядит хорошо.

0 голосов
/ 21 января 2009

Принудительное связывание данных обычно выполняется там, где автоматическое связывание данных выполняется в событии PreRender .

Обычно, если вы сделали удаление в событии click, ретранслятор должен обновиться сам, так как автоматически в preRender элементы управления на странице - DataBind (). Вот что говорит док Microsoft:

PreRender: перед этим событием каждый связанный с данными элемент управления, для которого установлено свойство DataSourceID, вызывает свой метод DataBind.

источник

Так что, вероятно, вы затронули Youritem.DataSource = List, но MS предлагает сделать YourItem.DataSourceID = List.ID или что-то в этом роде.

Надеюсь, это поможет

...