Как динамически обновить элемент управления ретранслятора с привязкой к данным .NET

StackOverflow https://stackoverflow.com/questions/463317

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

У меня была похожая ситуация ... повторитель привязан к xmlDataSource, оба внутри UpdatePanel. Я хотел позволить пользователю вводить одно имя за раз, а затем щелкнуть & Quot; Добавить & Quot; кнопка для обновления списка в репитере.

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

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

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

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

  

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

источник

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top