none
problème de postback pour les contrôles crées dynamiquement (contrôles déterminées par le choix de l'utilisateur) RRS feed

  • Question

  • Bonjour,

    Alors j'explique mon problème : j'utilise un GridView dans une page, lorsque l'utilisateur clique une ligne de cette dernière il affiche un modal qui contient des LinkButtons crées dynamiquement lors du click (le click c'est elle qui détermine les LinkButtons) lors de la création des linkButtons je les associe un Evènement click.

    Cet événement ne se déclenche jamais bien sure car il n’étais pas déclaré dans l’événement "Page_Load", le problème ici est que je ne eux pas le déclarer dans cet événement car il n'est pas reconnu que lors du choix de l'utilisateur !

    Y'a t'il une solution pour ce problème ?

    Merci d'avance. 

    mercredi 15 mars 2017 11:42

Réponses

Toutes les réponses

  • Bonjour,
    S'il vous plaît, pouvez-vous partager une partie de votre code.
    Consultez la solution proposée dans le thread "Add click event to dynamically created linkbutton inside gridview".

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse MohanedAmine jeudi 16 mars 2017 23:53
    jeudi 16 mars 2017 11:29
    Modérateur
  • Merci pour la réponse :)

    Dans mon cas les linkbuttons se créent au moment du click donc je ne peux pas les crées au moment du création du gridview.

    Alors voilà mon code :

    <asp:UpdatePanel ID="UpdatePanelHP" runat="server">
            <ContentTemplate>
    
                <asp:GridView ID="GVPr" runat="server" CssClass="GVClass" AutoGenerateColumns="False" GridLines="Horizontal" 
                    OnRowCommand="GVPr_RowCommand" AllowPaging="true" PageSize="100">
                    <AlternatingRowStyle BackColor="lightblue" />
                    <HeaderStyle BackColor="darkblue" Font-Bold="True" Height="30px" VerticalAlign="Middle" ForeColor="white" />
                    <PagerSettings Position="TopAndBottom" />
                    <PagerStyle HorizontalAlign="Center" />
                    <RowStyle Height="25px" />
    
                    <Columns>
                        <asp:TemplateField HeaderText="Project Id">
                            <ItemTemplate>
                                <asp:Label ID="lblPrjName" CssClass="GVTitlePrjCSS" runat="server" Text='<%# Eval("data").ToString()%>'></asp:Label> 
                            </ItemTemplate>
                        </asp:TemplateField>
                                    
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:ImageButton ID="Afficher" runat="server" CommandName="Aff" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ImageUrl="~/Images/Edit.png" Style="height:26px;" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
    
                </asp:GridView>
    
                <asp:Panel ID="pnlProject" runat="server" CssClass="test">
    
                </asp:Panel>
                <br />
                <asp:Label ID="Label1" runat="server"></asp:Label>
    
            </ContentTemplate>
        </asp:UpdatePanel>
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Remplir_GVPr();
                }
            }
    
            private void Remplir_GVPr()
            {
                DataTable DTPr = new DataTable();
                DTPr.Columns.Add("data", typeof(string));
    
                for (int i = 1; i <= 3; i++)
                {
                    DTPr.Rows.Add("Ligne" + i);
                }
    
                this.GVPr.DataSource = DTPr;
                this.GVPr.DataBind();
            }
    
            protected void GVPr_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "Aff")
                {
                    // Get Gridview data
                    int index = Convert.ToInt32(e.CommandArgument) + 1;
                    for (int i = 1; i <= index; i++)
                    {
                        LinkButton lb = new LinkButton();
                        lb.ID = "lb" + i;
                        lb.Text = "clickme";
                        lb.Click += Lb_Click;
                        this.pnlProject.Controls.Add(lb);
                    }
                }
            }
    
            private void Lb_Click(object sender, EventArgs e)
            {
                LinkButton currLb = (LinkButton)sender;
                this.Label1.Text = currLb.ID + " is clicked !";
            }


    <asp:updatepanel id="UpdatePanelHP" runat="server"></asp:updatepanel>
    jeudi 16 mars 2017 23:59