[英]Why does the EventHandler not fire in the following asp.net code?
[英]asp:button Created Programmatically: EventHandler does not fire
我正在編寫一個具有簡單ASP.NET表單的SharePoint Web部件。 我正在使用HtmlTextWriter呈現控件。 我的問題是我的按鈕似乎沒有觸發我為其分配的EventHandler。
我最初在CreateChildControls方法中聲明了按鈕,並連接了事件處理程序:
{
Button submitButton;
submitButton = new Button();
submitButton.Text = "Go!";
submitButton.Click += new EventHandler(submitButton_Click);
Controls.Add(submitButton);
}
我已經聲明了“ submitButton_Click” EventHandler的功能:
void submitButton_Click(object sender, EventArgs e)
{
submitButton.Text = "Good!";
}
我渲染控件:
protected override void RenderContents(System.Web.UI.HtmlTextWriter output)
{
RenderChildren(output);
}
最后,我部署了Web部件。 它在目錄中顯示良好,當我將其添加到頁面時,該控件也會顯示。 但是,我假設單擊按鈕時,其文本應更改為“ Go!”。 為“好!” 相反,它什么也不做。 我對所有這些技術(C#,Sharepoint和ASP.NET)都很陌生,因此我很確定這是我的理解問題,但是請嘗試使用不同於網上文章的其他步驟以及此處以前的問題沒解決我的問題。 謝謝參觀。
編輯:我打開了帶有Web部件的SharePoint頁面,並按如下所示創建了按鈕:
<input type="submit" name="ctl00$PlaceHolderMain$ctl00$ctl04" value="Go!" />
似乎根本沒有添加OnClick值,這就是我認為添加EventHandler可以做到的。 我是否要以完全錯誤的方式添加OnClick? 我也不明白為什么按鈕名稱與我在代碼中聲明的名稱不匹配。
查看此鏈接:
http://msdn.microsoft.com/en-us/library/ms452873.aspx
您錯誤地重寫了RenderContents方法,並將click事件連接到錯誤的位置。
您是從System.Web.UI.WebControls.WebParts.WebPart還是SharePoint WebPart繼承(對不起,我不記得命名空間了)。 建議從“ System.Web.UI.WebControls.WebParts.WebPart”繼承,以便它是一個簡單的ASP.NET Web部件,也可以在SharePoint中使用。
從該類繼承后,您將需要重寫“ Render”方法,這是我一直以來所做的,而且效果很好。 我認為您的CreatechildControls方法是正確的。 所以您的Render方法看起來像
protected override void Render(System.Web.UI.HtmlTextWriter output)
{
submitButton.RenderControl(write);
}
您還需要在“ CreateChildControls”方法之外聲明按鈕。編寫SharePoint WebParts時,我總是采用這種方法
希望能幫助到你。
改用CreateChildControls替代,可以在適當的時候在ASP.NET Control呈現管道中調用此替代。
我有一個類似的問題。 事件處理程序始終在觸發。 我檢查了SharePoint頁面的視圖源,發現呈現的HTML控件是輸入類型= Submit。 為了解決該問題,我在代碼中設置了“ button.UseSubmitBehavior = false”並設置了ID。 如果未在代碼中設置,則默認情況下,ASP.NET 2.0中的UseSubmitBehavior為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.