ASP.NET Recuperer colonnes gridview dynamique

Messages postés
2
Date d'inscription
lundi 30 avril 2018
Statut
Membre
Dernière intervention
3 mai 2018
-
Bonjour,

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.

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="DateB,NomM,NomP" DataSourceID="SqlDataSourceCircuit">
<Columns>
<asp:BoundField DataField="NomP" HeaderText="NomP" ReadOnly="True" SortExpression="NomP" />
<asp:TemplateField HeaderText="ReferenceB" SortExpression="ReferenceB">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ReferenceB") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ToleranceB" SortExpression="ToleranceB">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("ToleranceB") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


Le code pour ajouter les colonne

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.

Merci pour votre aide
Afficher la suite