2011-11-23 121 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