ASP.NET Recuperer colonnes gridview dynamique

quentin244 2 Messages postés lundi 30 avril 2018Date d'inscription 3 mai 2018 Dernière intervention - 2 mai 2018 à 09:44
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 

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.