带有ASP.NET Repeater和复选框Aync回发问题的UpdatePanel

带有ASP.NET Repeater和复选框Aync回发问题的UpdatePanel,asp.net,asynchronous,updatepanel,Asp.net,Asynchronous,Updatepanel,我这里有一个相当恼人的问题 我无法选中复选框CheckedChange event to fire、catch或任何失败的事件: ASPX代码 <asp:UpdatePanel runat="server" ID="udp_Lists" UpdateMode="Always"> <ContentTemplate> <asp:Repeater ID="rep_showings" runat="server"> <HeaderTemp

我这里有一个相当恼人的问题

我无法选中复选框CheckedChange event to fire、catch或任何失败的事件:

ASPX代码

<asp:UpdatePanel runat="server" ID="udp_Lists" UpdateMode="Always">
<ContentTemplate>
    <asp:Repeater ID="rep_showings" runat="server">
        <HeaderTemplate>
        </HeaderTemplate>
        <ItemTemplate>
            <div class="div_assignment">
                <div class="div_assignment_text">
                    <asp:LinkButton runat="server" ID="lnk_show_task" OnClick="lnk_show_task_Click" CommandArgument='<%# Eval("Id") %>' Text='<%# Eval("TaskTitle") %>'></asp:LinkButton>
                </div>
                <div class="div_assignment_checkbox">
                    <asp:CheckBox runat="server" ID="chk_handle" AutoPostBack="true" OnCheckedChanged="chk_handle_Changed" ToolTip='<%# Eval("Id") %>' />
                </div>
            </div>
        </ItemTemplate>
        <FooterTemplate>
        </FooterTemplate>
    </asp:Repeater>
</ContentTemplate>
<Triggers>
</Triggers>

永远不会到达代码隐藏功能“chk\U handle\U Changed”。
Linkbutten工作得很好。

我查看了您的问题。我使用了以下代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        this.rep_showings.DataSource = new object[] { new { Title = "title", ID = "id" } };
        this.rep_showings.DataBind();
    }
}

protected void chk_handle_Changed(object source, EventArgs e)
{
    Trace.Write("here");
}

protected void lnk_show_task_Click(object source, EventArgs e)
{
    Trace.Write("here 2");
}

protected void rep_showings_ItemCommand(object source, RepeaterCommandEventArgs e)
{ }
上述代码有效。我认为您可能在每次回发时都重新绑定了中继器-我通过删除Page_Load()中的“if(!IsPostBack)”语句进行了测试,并且我能够重现您描述的有问题的行为


如果可能,应避免在每次回发时重新绑定控件。控件填充后,其数据由ViewState处理,因此除非数据正在更改,否则您可能不应该一直对其重新绑定。

是的,您应该只在加载时在页面中进行数据绑定!我已经解决了这个问题,谢谢你为解决这个问题付出了额外的努力。