【问题标题】:UpdatePanel with ASP.NET Repeater and Checkbox Aync Postback issue带有 ASP.NET 中继器和 Checkbox Aync 回发问题的 UpdatePanel
【发布时间】:2009-04-25 14:04:29
【问题描述】:

我有一个相当烦人的问题

我无法让我的 CheckBox CheckedChange 事件触发、捕获或任何失败的事件:

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_handle_Changed" 背后的代码永远不会到达。 Linkbutten 完美运行。

【问题讨论】:

    标签: asp.net asynchronous updatepanel


    【解决方案1】:

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

    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 会处理它的数据,因此除非数据发生变化,否则您可能不应该一直重新绑定它。

    【讨论】:

    • 是的,你应该只在 !isPostback 时在 page_load 中进行数据绑定
    • 解决了这个问题,感谢您付出额外的努力来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多