簡體   English   中英

動態按鈕未調用點擊事件

[英]Dynamic Button not calling click event

我的頁面中有一個asp表,我從后面的代碼創建其內容。 對於此特定的TableRow,我需要創建一個多行文本框和一個按鈕,當我單擊按鈕時,將文本框內容保存到數據庫中。 但是我的點擊功能沒有被調用。 這是我的代碼:

ContentPlaceHolder cont = new ContentPlaceHolder();
HtmlGenericControl br = new HtmlGenericControl();
HtmlGenericControl br2 = new HtmlGenericControl();
TextBox texto = new TextBox();
Button btnSalvarTexto = new Button();
btnSalvarTexto.ID = "btnSalvar";
btnSalvarTexto.Click += new EventHandler(btnSalvarTexto_Click);
btnSalvarTexto.CssClass = "botao";
btnSalvarTexto.Text = "Salvar";
cont.ID = "Placeholder";
texto.ID = "TextBoxObs";
texto.Width = 300;
texto.TextMode = TextBoxMode.MultiLine;
texto.Rows = 3;
br.InnerHtml = "<br><br><div style='width:300px;background-color:#fff;padding:15px;'>";
cont.Controls.Add(br);
cont.Controls.Add(texto);
cont.Controls.Add(btnSalvarTexto);
br2.InnerHtml = "</div>";
cont.Controls.Add(br2);
td2.Controls.Add(cont);
tr2.Cells.Add(td2);
TablePrecos.Rows.Add(tr2);

事件處理程序:

void btnSalvarTexto_Click(object sender, EventArgs e)
{
    //Update command here, this function doesn't even gets called, so it doesn't matter what it does
}

我的代碼有什么問題? 我在btnSalvarTexto_Click函數中設置了一個斷點,但從未實現。

編輯:好的,創建這些控件的函數稱為CriarCapa,它在Page_LoadComplete這樣調用:

 protected void Page_LoadComplete(object sender, EventArgs e)
 if (!IsPostBack)
 {
    CriarCapa();
 }

是的,我正在測試是否不是回發。

您需要在每次頁面加載時重新創建按鈕,因為單擊按鈕會抹掉按鈕,並導致回發。

該按鈕導致回發,該回發會在實際事件處理程序之前在頁面生命周期中觸發Page_Load事件。 由於該按鈕是動態創建的,因此在頁面加載發生並且您的代碼僅在第一次構建動態內容時,不會創建該按鈕,也不會創建click事件的事件處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM