Я динамически добавляю текстовое поле к определенным строкам (только один столбец) вида сетки. Я добавляю элементы управления с помощью этого условия проверки (работает нормально):
TextBox txtASIN = new TextBox();
txtASIN.ID = "TxtASIN" + e.Row.RowIndex;
e.Row.Cells[4].Controls.Add(txtASIN);
int i = e.Row.Cells[4].Controls.Count; //TEST: This returns 1 correctly
Я хочу, чтобы пользователь мог вводить значения в одно или несколько из этих текстовых полей, а затем обновлять базу данных одним нажатием кнопки (а не одним щелчком для каждой строки). Проблема у меня заключается в том, как получить доступ к этим значениям в событии нажатия кнопки. Я провел простой тест таким образом, чтобы попытаться увидеть значение во второй строке, но получить значение null в temp1 (я уверен, что в этом текстовом поле введено значение):
protected void btnUpdate1_Click(object sender, EventArgs e)
{
TextBox temp = (TextBox)GridView2.Rows[1].FindControl("txt1");
string temp1 = temp.Text;
int i = GridView2.Row.Cells[4].Controls.Count; //TEST: This returns 0 incorrectly }
Как только я смогу выполнить эту работу, я могу перебирать строки и делать то, что мне нужно, со значениями. Я не знаю, является ли текст, введенный в текстовое поле, действительно читабельным без обратной передачи, но я в остальном озадачен. Откройте для лучших предложений о том, как это сделать.
Спасибо.
РЕДАКТИРОВАТЬ: Вот где я сейчас нахожусь. Я вижу текстовые поля в моей колонке в порядке. Я вставил кнопку, которая пытается их прочитать, и это то, что я вижу. Если я проверяю GridView2.Rows [0] .Controls.Count, я получаю 8, что является правильным числом столбцов. Если я проверяю GridVeiw2.Rows [0] .Cells [4] .Controls.Count, я получаю 0, что неправильно, потому что текстовое поле есть. Я могу получить счетчик 1 сразу после динамического создания, но не при следующем нажатии кнопки.
Может кто-нибудь объяснить это? Я чувствую, что если я справлюсь с этой задержкой, я смогу сделать все остальное.
Еще раз спасибо.