je suis en train de developper une application en ASP.NET, et j'ai un tableau GridView auquelle j'ajoute des colonnes de textBox dynamiquement, ensuite j'essaie de recuperer les contenu des textBox pour inserer dans la base de données, Cependant il affiche bien le tableau avec les colonne ajouter mais lorsque j'essaie de recuperer leur contenu ça récupère rien et il me dit que GridView2.Rows[r].Cells.Count est egale a 3.
public void InitialiserGrid() { int k = 0; while (k < GridViewSite.Rows.Count) { TemplateField site = new TemplateField { HeaderText = GridViewSite.Rows[k].Cells[1].Text }; GridView2.Columns.Add(site); k++; }
int n = 0; while (n < GridView2.Rows.Count) { int m = 3; while (m < GridView2.Rows[n].Cells.Count) { TextBox T = new TextBox { ID = "TextBox" + m }; GridView2.Rows[n].Cells[m].Controls.Add(T); m++; } n++; } }
et le traitement pour inserer dans la base de données
for (int r = 0; r < GridView2.Rows.Count; r++) { for (int j = 3; j < GridView2.Rows[r].Cells.Count; j++) { k = 0; while (k < GridViewSite.Rows.Count) { if (GridView2.Columns[j].HeaderText == GridViewSite.Rows[k].Cells[1].Text) { TextBoxNumero.Text = GridViewSite.Rows[k].Cells[0].Text; break; } k++; } TextBox tb = (TextBox)GridView2.Rows[r].Cells[j].Controls[0]; Response.Write(TextBoxNumero.Text); string constr = ConfigurationManager.ConnectionStrings["SuiviLaboConnectionString"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand("UPDATE [AnnalyseS] SET [ValeurAS] = @ValeurAS WHERE [DateAS] = @DateAS AND [NumeroS] = @NumeroS AND [NomM] = @NomM AND [NomP] = @NomP")) { cmd.Parameters.AddWithValue("@DateAS", Session["Date"]); cmd.Parameters.AddWithValue("@NomM", Session["MatriceC"]); cmd.Parameters.AddWithValue("@NomP", GridView2.Rows[r].Cells[0].Text); cmd.Parameters.AddWithValue("@NumeroS", (TextBoxNumero.Text)); cmd.Parameters.AddWithValue("@ValeurAS", (tb.Text)); cmd.Connection = con; con.Open(); cmd.ExecuteNonQuery(); con.Close(); } } }
Cependant rien ne se passe et il me dit que GridView2.Rows[r].Cells.Count est egale a 3.