You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET VB中DataBound GridView回发致模态弹窗关闭问题求助

解决Modal Popup Extender因回发关闭的问题

你的问题核心是整页回发导致ModalPopupExtender自动关闭,用UpdatePanel实现局部回发就能解决,具体实现步骤如下:

1. 确保页面存在ScriptManager

UpdatePanel依赖ScriptManager,先检查页面(一般是母版页或当前页)是否有这个控件,如果没有,在页面最上方添加:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

2. 用UpdatePanel包裹GridView和操作按钮

把你的GridView和Cancel按钮放到UpdatePanel内部,设置UpdatePanel的UpdateMode="Conditional",这样只有指定事件触发时才局部刷新,不会导致整页回发关闭模态框:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <td colspan="3" rowspan="4">
            <asp:GridView ID="grdClientLinks" runat="server" AutoGenerateSelectButton="True" 
                CellPadding="10" CellSpacing="10" OnSelectedIndexChanged="grdClientLinks_SelectedIndexChanged">
                <SelectedRowStyle BackColor="#0066FF" />
            </asp:GridView>
        </td>

        <td colspan="2" class="auto-style8">
            <asp:Button ID="cmdCancelLink" runat="server" Text="Cancel" CausesValidation="False" 
                OnClick="cmdCancelLink_Click" />
        </td>
    </ContentTemplate>
    <Triggers>
        <!-- 绑定GridView选择事件为异步回发触发器 -->
        <asp:AsyncPostBackTrigger ControlID="grdClientLinks" EventName="SelectedIndexChanged" />
        <!-- 绑定Cancel按钮点击事件为异步回发触发器 -->
        <asp:AsyncPostBackTrigger ControlID="cmdCancelLink" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

3. 修改后台VB.NET代码逻辑

  • 对于GridView的SelectedIndexChanged事件,只处理行选中后的业务逻辑(比如填充表单控件),不要调用ModalPopupExtender的Hide()方法:
Protected Sub grdClientLinks_SelectedIndexChanged(sender As Object, e As EventArgs)
    ' 这里写行选中后的逻辑,比如把选中行的数据绑定到模态框里的编辑控件
    ' 不要写 ModalPopupExtender1.Hide()
End Sub
  • 对于Cancel按钮的Click事件,如果只是要清空表单而不是关闭模态框,就只处理清空逻辑,同样不要调用Hide():
Protected Sub cmdCancelLink_Click(sender As Object, e As EventArgs)
    ' 清空模态框里的输入控件内容
    ' 不要写 ModalPopupExtender1.Hide()
End Sub

关键注意事项

  • 如果你的Cancel按钮确实需要关闭模态框,那保留ModalPopupExtender1.Hide()即可,但其他操作(比如GridView选中)要确保不触发关闭。
  • 确认ModalPopupExtender的PopupControlID指向的是包含UpdatePanel的模态容器,确保局部回发不会影响模态框的显示状态。

内容的提问来源于stack exchange,提问作者Westie73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:13:02