【问题标题】:Event in Update panel is not fired after rebinding control after Postback回发后重新绑定控件后,更新面板中的事件未触发
【发布时间】:2020-06-14 23:11:26
【问题描述】:

我在更新面板中有一个 Gridview 和一些 LinkBut​​ton。点击事件正确触发,我期望它们工作的方式。但是:在后面的代码中向网格添加额外的标题行后,我需要在每次回发后重新绑定网格。此后单击导致回发,但该方法未执行。

<asp:UpdatePanel runat="server" ID="UpdatePanel2" UpdateMode="Always">
<ContentTemplate>
<asp:GridView ID="GridViewFollowUpMove" runat="server" AutoGenerateColumns ="false" OnRowDataBound="FollowUp_RowDataBound" OnDataBound="FollowUpMove_OnDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Due date" ItemStyle-HorizontalAlign="left">
            <ItemTemplate>
                <asp:LinkButton ID="LB_DueDate" runat="server" OnClick="ActivateDueDate" CssClass="NoDeco" CommandArgument='<%# Bind("ISSUEID") %>'>
                <asp:Label ID="LabelDueDate" runat="server" Text='<%# Bind("DueDate","{0:dd.MM.yyyy}") %>' Width="60px" Class="line"/></asp:LinkButton>
                <asp:TextBox ID="TXTBX_DueDate" runat="server" Text='<%# Bind("DueDate") %>' Font-Size="11px" visible="false" OnTextChanged="TextChanged_DueDate" AutoPostBack="true"/>
            </ItemTemplate>
        </asp:TemplateField>

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            FillFollowUp();
        }
        FillFollowUp();
    } 

【问题讨论】:

    标签: c# asp.net updatepanel


    【解决方案1】:

    我通过将创建和自定义附加标题行的命令移至 OnRowCreated 事件解决了这个问题。正如我在某处读到的:当回发发生时,必须在服务器上重新创建 Gridview,并且在此过程中为每个项目触发 ItemCreated,但 ItemDataBound 不是(因为控件属性是从 ViewState 中提取的)。 所以在 DataBound 中构建这些标头是错误的选择!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多