![](/img/trans.png)
[英]Calling a WebMethod from the click event of dynamically added Button control in Asp.net does not work
[英]ASP.NET Click event does not work for multi buttons what created in tab button control
我是ASP.NET的新手,但是有問題。
在我的代碼中,btn.Click事件不適用於在選項卡按鈕控件中創建的多按鈕。 你們能建議我嗎? 謝謝,
<asp:Button Text="TAB MENU" BorderStyle="None" ID="Tab" CssClass="Initial" runat="server" OnClick="Tab_Click" />
<asp:Panel ID="panel1" runat="server" Direction="LeftToRight" HorizontalAlign="Left"></asp:Panel>
protected void Tab_Click(object sender, EventArgs e) {
foreach (...) {
Button btn = new Button();
btn.Click += Button1_Click;
panel1.Controls.Add(btn);
}
}
protected void Button1_Click(object sender, EventArgs e) {
**some code here! but does not work.**
}
嘗試這個
Button btn = new Button();
btn.Click += new RoutedEventHandler(Button1_Click);
panel1.Controls.Add(btn);
您的問題可能與以下事實有關:在觸發Button1_Click回調時,按鈕不存在... Asp.net Webforms是基於HTTP的某種泄漏抽象,因此有時很難解密,但是我希望發生的事情是,當發生按鈕單擊的回發時,該按鈕實際上並不存在於控件樹中,因為僅當單擊選項卡控件時,該按鈕才會添加到控件樹中。 因此,由於該按鈕在回發中不存在,因此Webforms不知道如何處理該事件,因此它將忽略該事件...
如果必須動態創建按鈕,請考慮使它們使用一些javascript來編輯某些隱藏的字段或某些內容,您可以在Page_Load方法中檢查其值,然后使用該值做任何在功能上有意義的事情。
如果它們不是動態的,而是每個頁面加載都相同(但每個選項卡都不同)(即,加載頁面時,您正在從數據庫中繪制一些信息來確定要顯示的按鈕,但這會(不要在同一頁的回發之間更改),然后考慮在Page_Load事件中創建按鈕,而不是在創建選項卡時引發的事件內部創建按鈕。
另外,由於在您的評論中您建議使用按鈕來打開一個新窗口,為什么不僅僅讓按鈕在客戶端運行,即使用javascript window.open命令。 然后,您甚至根本不需要發回服務器...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.