回发后重新绑定控件后,不会触发"更新"面板中的事件



我在更新面板中有一个网格视图和一些链接按钮。点击事件正确触发,我希望它们的工作方式。但是:在代码隐藏中向网格添加额外的标题行后,我需要在每次回发后重新绑定网格。此后,单击会导致回发,但不会执行该方法。

<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();
} 

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

最新更新