2011-11-23 123 views
0

我註冊了ItemDataBound的方法 - 像這樣的事件:爲什麼Repeater.ItemDataBound - 事件不會觸發任何事情?

protected void Page_Init(object sender, System.EventArgs e) 
{ 
    MyRepeater.ItemDataBound += MyRepeater_ItemDataBound; 
    // ... 
} 

protected void MyRepeater_ItemDataBound(object sender, 
    System.Web.UI.WebControls.RepeaterItemEventArgs e) 
{ 
    // ... 
} 

這樣,沒有被觸發,永遠不會執行的方法。 當我在代碼註冊的方法 - 像

<asp:Repeater ID="MyRepeater" runat="server" 
    OnItemDataBound="MyRepeater_ItemDataBound"> 

它的工作。爲什麼前版本不工作?

THX任何的竅門sl3dg3

+1

是不是真的叫了page_Init? AutoEventWireUp是否設置爲true? – idm

+0

是的,調用'Page_Init'。我不知道爲什麼需要AutoEventWireUp(我用真正的測試,沒有區別)。其他事件,如'BtnSave.Click + = BtnSave_Click;'(也在Page_Init中註冊)雖然工作,奇怪... – sl3dg3

回答

1

您可能忽略在aspx文件頁眉AutoEventWireup=true

編輯: 如果按鍵處理程序做的工作,也許是與databinging問題 - 你確定你正在呼籲MyRepeaterDataBind或任何它的父控件?如果您手動撥打DataBind,它是否取決於您網頁上的Page.IsPostBack

+0

正確 - 它被設置爲false。但我不明白爲什麼我需要這個,因爲我明確地註冊了該事件的功能? – sl3dg3

+0

p.s .:與按鈕相同的作品:'BtnSave.Click + = BtnSave_Click;' – sl3dg3

+0

您需要這個才能調用Page_Init。你不明確地設置Page.Init + = Page_Init並且不重寫OnInit,對嗎? – idm

0

檢查AutoEventWireUp設置爲true。如果AutoEventWireUp爲false,則您的Page_Init方法將不會執行,因此將處理程序附加到ItemDataBound事件的代碼將不會執行。

+0

'Page_Init'被稱爲... – sl3dg3