我有我自己的Control1,它是作爲子控件動態添加到Control2的,它在Control2的CreateChildControls()中實現INamingContainer。ASP.NET:如何爲我自己的控件處理回發事件?
Control1本身實現IPostBackEventHandler。但RaisePostBackEvent()方法永遠不會在Control1上調用,儘管我使用JavaScript調用回發方法。
是的,還有其他控件在頁面上實現IPostBackEventHandler接口。
我錯過了什麼?
什麼可能導致此問題?
UPDATE:控制1總是產生完全相同的方式和控制2
它看起來像這樣在控制2分配完全相同的ID:
protected override void CreateChildControls()
{
if(!this.DesignMode)
{
Control1 c = new Control1();
c.ID = "FIXED_ID";
}
base.CreateChildControls();
}
UPDATE2: 控制1:
public class Control1: Control, IPostBackEventHandler
{
...
protected virtual void RaisePostBackEvent(string eventArgument)
{
if(!String.IsNullOrEmpty(eventArgument))
{
// Some other code
}
}
}
如果我加行
Page.RegisterRequiresRaiseEvent(c);
在Control2中的CreateChildControls()中,此方法正在調用,但始終爲空eventArgument。
UPDATE3:
在JavaScript上的一些onClick事件我做到以下幾點:
__doPostBack(Control1.UniqueID,'commandId=MyCommand');
其中Control1.UniqueID是當然的渲染過程中取代與真正的UNIQUEID。我查過了,這個腳本正在被調用。
@Artem,請說明您是如何註冊回髮腳本的?這是你的控制的一般結構。 – 2010-02-19 09:13:20
增加JavaScript的說明 – Artem 2010-02-19 19:35:00