2010-11-29 4 views
2

Так что я использую ASP.NET с C#. И у меня есть элемент, который запрашивается из базы данных и отображает элементы правильно.ASP.NET Web UI ListView не обновляет

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

Однако, когда пользователь вводит комментарий, таблица остается неизменной, она не обновляется. Если я снова нажму кнопку «Отправить комментарий», тогда будет отображаться предыдущий комментарий, но не текущий.

Я пытался на кнопку «Добавить комментарий», чтобы добавить следующее:

CommentsView.DataBind(); 

не повезло, он не будет обновляться. И какой-то умный программист на microsoft забыл добавить в класс ListView простое «ListView.Refresh()».

Я не понимаю, почему AJAX автоматически не обновляет таблицу для обновления информации. Как вы можете отображать последние данные?

+0

Вы обновили комментарий View.DataSource после того, как пользователь ввел комментарий? – David 2010-11-29 18:28:27

+1

Какая реализация AJAX вы используете? Если вы используете ASP.NET AJAX от Microsoft, вы, вероятно, должны обернуть UpdatePanel вокруг ListView, чтобы вы могли инициировать обновление ListView, обновив UpdatePanel. – KBoek 2010-11-29 18:30:18

+0

«.. какой-то умный программист на microsoft ..» Sarcasm on SO часто не проходит хорошо - если вы не на meta.stackoverflow.com – Hogan 2010-11-29 18:40:02

ответ

3

Эти умные программисты в Microsoft понимают, как databind работает на страницах apsx.

Это связано с пониманием страницы lifecycycle. Если вы прочтете эту документацию и поймете ее, проблема, с которой вы столкнулись, должна стать ясной.

Но быстрый ответ таков: прямо сейчас вы привязываетесь к данным на странице init. Если вы хотите, чтобы эти данные изменились, вы должны переподчинить источник данных. .NET автоматически кэширует его для вас в viewstate в противном случае.

Добавить код в свой «Отправить комментарий», чтобы повторно привязать источник данных (и, таким образом, изменить вид), и все должно быть в порядке.

0

Просто сделать

listView.DataBind()

обновить ListView.

Смежные вопросы