Bonsoir,
Est il possible de rajouter des boutons ASP à la volé? j'ai essayé avec les contrôles HTML comme <input>, <img>,..etc et ça fonctionne, peut on faire la même chose avec les contrôles asp.net ?
Merci d'avance.
Version imprimable
Bonsoir,
Est il possible de rajouter des boutons ASP à la volé? j'ai essayé avec les contrôles HTML comme <input>, <img>,..etc et ça fonctionne, peut on faire la même chose avec les contrôles asp.net ?
Merci d'avance.
Dans le Page_Load :
Code:
1
2 Button b = new Button { Text = "Hello" }; this.Controls.Add(b);
Bonsoir,
Peut on rajouter ce code à l'intérieur d'une boucle for pour construire un tableau en response.write.... ?
Merci d'avance.
Merci pour vos réponses, je fais des traitements en ajax, donc j'envoie à une 2ème page des données en xmlhttp pour faire un traitement et je voudrai construire mes contrôles (actuellement je fais response.write pour les contrôles html).
Comment peut on faire la même chose avec les contrôles ASP ?.
Merci d'avance.
Je sais pas ce que tu veux faire mais je pense que tu veux executer des evenements apres clique sur les boutons, chose que je pense impossible dans ton cas (peut être que j'ai tord)!!Citation:
Merci pour vos réponses, je fais des traitements en ajax, donc j'envoie à une 2ème page des données en xmlhttp pour faire un traitement et je voudrai construire mes contrôles (actuellement je fais response.write pour les contrôles html).
Comment peut on faire la même chose avec les contrôles ASP ?.
Merci d'avance.
En tout cas pour ce genre de scenarion le ASP.NET MVC est plus adequat car tu n'utilise plus des evenement mais des actions
Salut,Ben oui...
Et?... Ca change quoi?
A croire que le développement web n'existait pas avant ASP.Net MVC...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { Button button = new Button(); button.Click += new EventHandler(button_Click); button.Text = "Hello " + i.ToString(); this.Controls.Add(button); } } void button_Click(object sender, EventArgs e) { throw new NotImplementedException(); } }
A+
Mobilis ==> Est ce que t'as au moins lu ce qu'il voulais faire ???
Parceque je croix que tu l'as pas fait !!
Ce qu'il veut faire c'est rajouter des boutons (qu'il doit ensuite rendre via ajax).
Je pense que c'est pas faisable car le context d'execution du bouton change
il n'est pas dans le context de la page dans lequel il a été créé.
NB : Dsl pour mon français assez mediocre.
Bonjour,
Je pense que ce qui est demandé n'est pas possible car si les boutons sont créés dans un update panel à la volée, il n'empêche que lors du rechargement de l'update panel, les boutons n'existe plus (puisque créés par le code behind).
Pour que cela fonctionne, il est nécessaire de créer chaque boutons avant le page_load, mais si on connais pas le nombre de boutons à créer, on ne peut pas les déclarer avant le page_load.
Dites-moi si je me trompe.
J'ai posté une question hier du même ordre, et ce sont les conclusions auxquelles je suis arrivé après une recherche dans différents forums.
J'ai cherché dans mes vieux docs pour les trouver malheureusement j'ai pas trouvé. Cependant je t'invite à lire ces deux articles qui sont parmi des centaines Article 1 et Article 2
Et pour ne pas sortir du cadre de la discution J'invite Blunt à consulter l'article 2 qui pourrait lui servir
Ok Un updatepanel envoi plus de données. C'est très dangereux effectivement. Traverser la route aussi... Après tout cela peut se défendre si on court après les millisecondes et les centaines de bits.
Ton lien pointe vers l'article 1.Pour ce qui est de déclencher un évènement sur un bouton généré dynamiquement voici un bout de code d'une application ASP.Net avec master page.
Code inline:
Code behind:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <%@ Page Title="Page d'accueil" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <p> </p> <div style="border: 1px solid black; margin: 10px;"> <asp:UpdatePanel ID="UpdatePanel1" runat="server" ClientIDMode="Static"> <ContentTemplate> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> </div> <div style="border: 1px solid black; margin: 10px;"> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:Label ID="Label2" runat="server" ForeColor="red" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> </div> </asp:Content>
A+Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 using System; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { AddControls(sender, e); } } private void AddControls(object sender, EventArgs e) { Label l = new Label(); l.ID = "Label1"; l.Text = "Label for button"; UpdatePanel1.ContentTemplateContainer.Controls.Add(l); Button b = new Button(); b.ID = "test"; b.Text = "Click me"; b.Click += new EventHandler(b_Click); b.ValidationGroup = "testGroup"; UpdatePanel1.ContentTemplateContainer.Controls.Add(b); AsyncPostBackTrigger trig = new AsyncPostBackTrigger(); trig.ControlID = b.ID; trig.EventName = "Click"; UpdatePanel1.Triggers.Add(trig); } protected void Button1_Click(object sender, EventArgs e) { Label2.Text = DateTime.Now.ToLongTimeString(); } protected void b_Click(object sender, EventArgs e) { Label2.Text = DateTime.Now.ToLongTimeString(); } } }