C# - не удается прочитать динамически созданное текстовое поле в gridview
Привет Я программно создаю текстовые поля в gridview. Но я не могу получить значение из текстового поля.
У меня есть текстовое поле, в котором я получаю количество создаваемых строк, и при нажатии кнопки "Go" оно заполняет gridview динамически создаваемыми текстовыми полями.
Мне нужно прочитать значения из текстовых полей gridview, и вот здесь я застрял.
Мой Gridview:
<asp:GridView ID="gvPlan" runat="server" ShowFooter="True" AutoGenerateColumns="true"> <Columns> </Columns> </asp:GridView>
кодовая страница:
protected void btnGo_Click(object sender, EventArgs e) { Insert_Grid(); } private void Insert_Grid() { CreateGridView(); int numbers = int.Parse(txtRows.Text.Trim()); int cellCount = gvPlan.Rows[0].Cells.Count; int rowsCount = gvPlan.Rows.Count; foreach (GridViewRow row in gvPlan.Rows) { // text box - ID TextBox txtID = new TextBox(); txtID.ID = "tID" + (Convert.ToInt32(row.RowIndex + 1)).ToString(); txtID.Attributes.Add("runat", "server"); row.Cells[1].Controls.Add(txtID); // text box - NAME TextBox txtName = new TextBox(); txtName.ID = "tName" + (Convert.ToInt32(row.RowIndex + 1)).ToString(); txtName.Attributes.Add("runat", "server"); txtName.Attributes.Add("ReadOnly", "true"); row.Cells[2].Controls.Add(txtName); } } private void CreateGridView() { int numbers = int.Parse(this.txtRows.Text.Trim()); DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(string)); dt.Columns.Add("Name", typeof(string)); for (int i = 0; i < numbers; i++) { dt.Rows.Add("", ""); } ViewState["CurrentTable"] = dt; gvPlan.DataSource = dt; gvPlan.DataBind(); } protected void btnSave_Click(object sender, EventArgs e) { int rowIndex = 0; if (ViewState["CurrentTable"] != null) { DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"]; if (dtCurrentTable.Rows.Count > 0) { for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) { //extract the TextBox values TextBox gtxtID = (TextBox)gvPlan.Rows[rowIndex].Cells[1].FindControl("tID" + (rowIndex+1)); TextBox gtxtName = (TextBox)gvPlan.Rows[rowIndex].Cells[2].FindControl("tName" + (rowIndex + 1)); gtxtName.Text = gtxtID.Text; rowIndex++; } } }
Проблема заключается в процедуре "btnSave_Click", где я, кажется, не получаю значение из gtxtID. Он не может найти элемент управления текстовым полем и объект имеет значение null
Мы очень ценим вашу помощь.
С уважением
Ильяс
Что я уже пробовал:
Пробовал отлаживать код за кодом но тщетно