0

在 aspx 中注册的事件

<asp:Repeater ID="StepRepeater" OnItemDataBound="StepRepeater_ItemDataBound1" runat="server">

尝试使用 AutoEventWireUp true & false

这是后面代码中的方法:

    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 事件。

请让我知道是否有任何其他信息会有所帮助。

4

2 回答 2

2

您的OnItemDataBound值与您的方法名称不匹配。

OnItemDataBound="StepRepeater_ItemDataBound1"

protected void StepRepeater_ItemDataBound

1从末尾删除OnItemDataBound或更改您的方法名称。


同样正如@Adil所说,删除该new Repeater()行:

Repeater StepRepeater = new Repeater();

更新:阅读您对另一个关于添加new Repeater()行以防止空引用错误的答案的评论后:

添加new Repeater()将创建一个新的Repeater控件实例,因此不会引用Repeater您的 ASPX 标记文件。

如果您收到空引用异常,您应该检查指令中的Inherits属性@Page(通常是 ASPX 文件的最顶行)是否与文件中的 匹配,并且您的class属性是否与文件名匹配。.aspx.csCodeFile.aspx.cs

于 2012-08-15T16:33:43.423 回答
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();
}

更改OnItemDataBoundhtml中的事件名称以匹配后面的代码

<asp:Repeater ID="StepRepeater" OnItemDataBound="StepRepeater_ItemDataBound" runat="server">
于 2012-08-15T16:31:59.647 回答