由 UpdatePanel 内的 GridView 内的 LinkBut​​ton 触发的完整回发

2024-05-12

我在 UpdatePanel 中有一个 GridView。模板字段中有一个用于标记项目的按钮。从功能上讲,这工作得很好,但该按钮总是触发整页回发而不是部分回发。如何获得触发部分回发的按钮?

<asp:ScriptManager ID="ContentScriptManager" runat="server" />
<asp:UpdatePanel ID="ContentUpdatePanel" runat="server" ChildrenAsTriggers="true">
    <ContentTemplate>
        <asp:GridView ID="OrderGrid" runat="server" AllowPaging="false" AllowSorting="false"
            AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField HeaderText="">
                    <ItemTemplate>
                        <asp:LinkButton ID="MarkAsCompleteButton" runat="server" Text="MarkAsComplete"
                            CommandName="MarkAsComplete" CommandArgument='<%# Eval("Id") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Name" HeaderText="Name" />
                <asp:BoundField DataField="LoadDate" HeaderText="Load Date" />
                <asp:BoundField DataField="EmployeeCutOffDate" HeaderText="Cut Off Date" />
                <asp:BoundField DataField="IsComplete" HeaderText="Is Completed" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

您需要将每个 LinkBut​​ton 注册为AsyncPostBackTrigger。将每一行绑定到 GridView 中后,您需要搜索 LinkBut​​ton 并通过代码隐藏注册它,如下所示:

protected void OrderGrid_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
   LinkButton lb = e.Row.FindControl("MarkAsCompleteButton") as LinkButton;  
   ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);  
}  

这也要求ClientIDMode="AutoID"如前所述,为 LinkBut​​ton 设置here http://stackoverflow.com/a/5736518(谢谢雷兹万熊猫 https://stackoverflow.com/users/750216/r%c4%83zvan-panda指出这一点)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由 UpdatePanel 内的 GridView 内的 LinkBut​​ton 触发的完整回发 的相关文章

随机推荐