Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    4

    generare evento da controllo dinamico

    non riesco a generare dinamincamente un evento che sia associato a un controllo anch'esso generato a runtime.
    Il priblema suppongo si anella gestione del postback e nel far generare l'evento stesso solo e se il controllo che lo scatena è staqto generato...
    per chiarire vi posto un esempietto.praticamente al click di un bottone vengono creati nLinkButton ai quali voglio associare un evento click...vedrete che scompare il tutto se cliccate.
    Se invece il codice dentro al click del bottone lo sposto nel page load allora funziona...
    avete consigli?

    eccovi il misero codice

    *************************************************

    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label lbl_msg;
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Panel panel;
    protected LinkButton lbt = new LinkButton();
    private void Page_Load(object sender, System.EventArgs e)
    {

    }
    private void title_order_click(object sender,CommandEventArgs e)
    {
    lbl_msg.Text="hai cliccato il linkbutton "+e.CommandName.ToString();
    }

    #region Codice generato da Progettazione Web Form
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// Metodo necessario per il supporto della finestra di progettazione. Non modificare
    /// il contenuto del metodo con l'editor di codice.
    /// </summary>
    private void InitializeComponent()
    {
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load);

    }
    #endregion

    private void Button1_Click(object sender, System.EventArgs e)
    {
    Table tbl= new Table();

    for (int i=0;i<11;i++)
    {
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    lbt = new LinkButton();
    lbt.Text="linkbutton["+i.ToString()+"]";
    lbt.CommandName="linkbutton["+i.ToString()+"]";
    aggiungiEventoLB(lbt);
    cell.Controls.Add(lbt);
    row.Controls.Add(cell);
    tbl.Controls.Add(row);
    }
    panel.Controls.Add(tbl);
    }
    private void aggiungiEventoLB(LinkButton lbt)
    {
    lbt.Command += new System.Web.UI.WebControls.CommandEventHandler(titl e_order_click);
    }
    }
    **********************************************

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    4

    ..

    zampa?
    zofm?
    invoco il vostro aiuto!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    4

    UP!UP!UP!!!

    ho parzialmente risolto il mio problema,ma con una truffa!!
    ho cioè utilizzato una variabile in Session per riconoscere se effettivamente il controllo che deve generare l'evento è stato creato....ma non ci credo che sia l'unico modo!!!!

    vi posto il codice,datemi suggerimenti vi prego!!!



    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label lbl_msg;
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Panel panel;
    protected System.Web.UI.WebControls.Label Label1;
    protected LinkButton lbt = new LinkButton();
    private void Page_Load(object sender, System.EventArgs e)
    {
    lbl_msg.Text="";
    if (Session["esisteControllo"]=="true")
    {
    generaControlli();
    }
    }

    private void Page_Init(object sender, System.EventArgs e)
    {

    }

    private void lbt_click(object sender,CommandEventArgs e)
    {
    lbl_msg.Text="you clicked linkbutton "+e.CommandName.ToString();
    generaControlli();
    }


    private void Button1_Click(object sender, System.EventArgs e)
    {
    Session["esisteControllo"]="true";
    generaControlli();
    }

    private void generaControlli()
    {
    if (!panel.HasControls())
    {
    Table tbl= new Table();
    for (int i=0;i<11;i++)
    {
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    lbt = new LinkButton();
    lbt.Text="linkbutton["+i.ToString()+"]";
    lbt.CommandName="linkbutton["+i.ToString()+"]";
    lbt.Command += new System.Web.UI.WebControls.CommandEventHandler(lbt_ click);
    cell.Controls.Add(lbt);
    row.Controls.Add(cell);
    tbl.Controls.Add(row);
    }
    panel.Controls.Add(tbl);
    }
    }


    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.