ASP.NET Обратная передача в GridView не устанавливает значения опубликованных элементов управления
-
02-07-2019 - |
Вопрос
При добавлении EditItemTemplate некоторой сложности (несколько полей в одном шаблоне), а затем разборе элементов управления из события RowUpdating элементы управления, введенные пользователем вручную, не имеют значений.Я предполагаю, что что-то происходит с привязкой данных, но у меня были случаи, когда простое добавление атрибута и к элементу управления в codebehind запускало поведение, а удаление этого кода заставляло код работать.В качестве обходного пути я могу запросить (controlname.UniqueID), чтобы получить его значение, но это скорее взлом.
Редактировать Когда я получаю доступ к значению следующим образом
TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;
текстовое поле найдено, но .Текст не является пользовательским вводом.
Решение
Вы отключили ViewState?Вы добавили управление программно в шаблон?Если да, то создали ли вы их на правильном этапе?
Другие советы
Вы должны иметь возможность использовать GridViewUpdateEventArgs для извлечения введенного значения, например:
TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;
Я уже использовал этот синтаксис раньше, и он работает как по волшебству.
Перемещенные данные после возврата -привязка к Page_Init