Réponse acceptée !
Bonjour,
Je viens rapidement de te faire un exemple :
Default.aspx :
<%@PageLanguage="C#"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<scriptrunat="server">
privatevoid Page_Load(Object sender, EventArgs e)
{
int countUC;
if (int.TryParse(Request.QueryString["countUC"], out countUC))
{
MultiView1.ActiveViewIndex = 1;
for (int i = 0; i < countUC; i++)
{
Control c = Page.LoadControl("UCPersonne.ascx");
PHUC.Controls.Add(c);
}
}
}
privatevoid ButtonAddFields_Click(Object sender, EventArgs e)
{
Response.Redirect("Default.aspx?countUC=" + TextBoxNbPersonnesToAdd.Text);
}
privatevoid ButtonAddPersonnes_Click(Object sender, EventArgs e)
{
System.Data.DataTable table = new System.Data.DataTable("Personne");
table.Columns.Add("FirstName", typeof(String));
table.Columns.Add("LastName", typeof(String));
foreach (Control c in PHUC.Controls)
{
if (c isUserControl)
{
System.Data.DataRow row = table.NewRow();
row["FirstName"] = ((TextBox)c.FindControl("TextBoxFirstName")).Text;
row["LastName"] = ((TextBox)c.FindControl("TextBoxLastName")).Text;
table.Rows.Add(row);
}
}
MultiView1.ActiveViewIndex = 2;
GridViewPersonnes.DataSource = table;
GridViewPersonnes.DataBind();
}
</script>
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>Untitled Page</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:MultiViewID="MultiView1"runat="server"ActiveViewIndex="0">
<asp:Viewrunat="server">
<asp:TextBoxID="TextBoxNbPersonnesToAdd"runat="server"Text="3"/><asp:ButtonID="ButtonAddFields"
runat="server"Text="Generate fields"OnClick="ButtonAddFields_Click"/>
</asp:View>
<asp:Viewrunat="server">
<asp:PlaceHolderID="PHUC"runat="server"/>
<asp:ButtonID="ButtonAddPersonnes"runat="server"Text="Add personnes"OnClick="ButtonAddPersonnes_Click"/>
</asp:View>
<asp:Viewrunat="server">
<asp:GridViewrunat="server"ID="GridViewPersonnes"AutoGenerateColumns="true">
</asp:GridView>
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>
UCPersonne.ascx
<%@ControlLanguage="C#"ClassName="UCPersonne"%>
<scriptrunat="server">
</script>
<asp:LabelID="LabelFirstName"runat="server"AssociatedControlID="TextBoxFirstName"EnableViewState="false">Prénom :</asp:Label><asp:TextBoxID="TextBoxFirstName"runat="server"></asp:TextBox><br/>
<asp:LabelID="LabelLastName"runat="server"AssociatedControlID="TextBoxLastName"EnableViewState="false">Nom :</asp:Label><asp:TextBoxID="TextBoxLastName"runat="server"></asp:TextBox><br/>
<hr/>
C'est une méthode trés crade et je t'interdis de faire aussi sale que moi ;-) mais j'espere que tu comprendras le principe du jeu :-) il y aurais d'autres facons de faire sans passer par un response.redirect mais c'est la facon la plus simple de faire.
Cyril -
MVS -
MCP