在aspx中注册的事件
<asp:Repeater ID="StepRepeater" OnItemDataBound="StepRepeater_ItemDataBound1" runat="server">
尝试使用AutoEventWireUp true&amp;假
这是后面代码中的方法:
public void LoadSteps(Request request)
{
Repeater StepRepeater = new Repeater();
StepRepeater.DataSource = request.Steps;
StepRepeater.DataBind();
}
protected void StepRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
当单步执行时,它直接通过“StepRepeater.DataBind();”没有点击ItemDataBound事件。
如果有任何其他信息有帮助,请与我们联系。
答案 0 :(得分:2)
您的OnItemDataBound
值与您的方法名称不符。
OnItemDataBound="StepRepeater_ItemDataBound1"
protected void StepRepeater_ItemDataBound
从1
末尾删除OnItemDataBound
或更改您的方法名称。
同样@Adil已说明,请移除new Repeater()
行:
Repeater StepRepeater = new Repeater();
更新:在阅读有关添加new Repeater()
行以防止出现空引用错误的其他答案的评论后:
添加new Repeater()
将创建Repeater
控件的新实例,因此不引用ASPX标记文件上的Repeater
。
如果您收到空引用异常,则应检查Inherits
指令中的@Page
属性(通常是ASPX文件的最顶行)是否与class
匹配。您的.aspx.cs
文件,以及您的CodeFile
媒体资源与.aspx.cs
文件名匹配。
答案 1 :(得分:0)
您有binded
个事件ItemDataBound到StepRepeater in html
,但您要分配新创建的转发器对象和no event is attached to this repeater object
的数据源。
删除此声明
Repeater StepRepeater = new Repeater();
您的代码将是
public void LoadSteps(Request request)
{
StepRepeater.DataSource = request.Steps;
StepRepeater.DataBind();
}
更改html中OnItemDataBound
事件的名称以匹配
<asp:Repeater ID="StepRepeater" OnItemDataBound="StepRepeater_ItemDataBound" runat="server">