簡體   English   中英

動態生成控件的事件處理

[英]Event handling for dynamically generated controls

我正在研究一個模塊,基本上使用XSLT在頁面上動態生成所有控件。 它們將被渲染並添加到標記中。 這里的問題是我想為此動態生成的控件編寫事件處理,而且我不確定如何實現,因為在完美的開發環境中,我們通常雙擊aspx頁面上的控件,.NET為您創建一個相關事件在aspx.cs頁面的后面。

有任何想法嗎?

動態添加的控件通常不能在回發后繼續存在。

雙擊甚至用_selectedIndexChanged輸入控件的預期名稱都不會獲得所需的結果。

這是在假設您正在添加HTML控件,而不是動態添加ASP.NET控件(請告訴我們我是對還是錯)。

如果要執行客戶端事件,則可以通過添加適當的屬性來指定要觸發的方法的名稱(或代碼本身)。

例如,如果要在用戶單擊動態生成的復選框時觸發myCheckBox_OnClick ,則可以執行以下操作:

myDynamicallyGeneratedControl.Attributes.Add("onclick", "myCheckBox_OnClick");

您還可以生成要執行的javascript代碼,然后通過頁面的ClientScript.RegisterStartupScript方法將其添加到頁面中。

您需要使用適當的處理程序創建一個方法,並在創建它們時將其連接到動態創建的控件。

protected void MyHandler(object sender, EventArgs e)
{
    //Do some stuff
}

當您創建控件時

LinkButton lb = new LinkButton();
    lb.ID = "lbexample";
    lb.Click += MyHandler;
Page.Form.Controls.Add(lb);

但是非常重要的是,在回發時,請按原樣重建這些控件,否則事件將不會觸發。 您需要首先重新創建控件,以便引發事件,因此,必須使用自己喜歡的任何狀態機制在回發中提供創建控件所需的任何數據。

暫無
暫無

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

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