如何刷新打开的弹出扩展程序面板

时间:2011-08-08 12:07:29

标签: asp.net refresh modalpopupextender

我有一个gridview,每行都有一个按钮。单击此按钮后,将打开Modal PopUp Extender面板(使用PanelName.Show())。 Panel包含一个用户控件,显示一些标签,文本框等。使用附加信息绑定表格SqlDataSource。在此之前它运作良好。但是,当我单击另一个按钮时,面板纯粹显示但内容未刷新(根据单击的按钮,应显示一些详细信息)。基本上,只为显示但不再显示的面板弹出窗口调用方法SqlDataSource_Selecting。

如何在每个PanelName.Show()后强制面板刷新(重新加载)?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,我认为问题是您只需在用户单击按钮更改“选定”项后重新绑定数据绑定控件。您可以使用[ControlName].DataBind()来执行此操作。这有意义吗?

答案 1 :(得分:0)

这取决于您要刷新的控件是否为DataBound()

换句话说,您是否可以使用DataBind()方法调用来强制控件重新加载,以强制控件重新加载自身,使用相同或新数据? 大多数GUI控件都使用DataBind()方法,但如果控件实际上没有使用数据,那么它就没用了!

这就是为什么在您的情况下,您的面板不会刷新"使用新数据,因为在面板上使用DataBind()不会做任何事情。在整个GridView上使用数据绑定()是一个不同的故事,应该可以工作。也许在整个地方放置一个UPDATEPANEL?如果你这样做,你必须小心你的正常编辑和行上的其他命令将继续工作。

,您可以做的是将modalpopupextender放入TemplateField,并使用"技巧",您可以保留您的服务器帖子支持并仍然弹出弹出式面板。

    <asp:UpdatePanel ID="upADDMAIN" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Button ID="btnADD" runat="server" Text="NEW LOGIN" BackColor="Blue" Font-Bold="True" ForeColor="#FFFFCC" OnClick="btnADD_Click" />
            <asp:Button ID="btnDUM" runat="server" style="display:none" />
            <div style="height:20px">
            </div>
            <ajaxToolkit:ModalPopupExtender ID="mpeADD" runat="server"
                targetcontrolid="btnDUM" 
                popupcontrolid="upADD" 
                backgroundcssclass="modelbackground">    
            </ajaxToolkit:ModalPopupExtender>
            <asp:UpdatePanel ID="upAdd" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="pnlADD" runat="server" Width="700px" HorizontalAlign="Center" CssClass="auto-style10" Height="200px">
..
..
                        <div id="puFTR" class="auto-style17" style="vertical-align: middle">
                            <asp:Button id="btnOK" runat="server" Text="OK" style="width: 80px" OnClick="btnOK_Click" />
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            <asp:Button id="btnCAN" runat="server" Text="CANCEL" style="width: 80px" OnClick="btnCAN_Click" CausesValidation="False" />
                        </div>
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
        </ContentTemplate>
    </asp:UpdatePanel>

正如您所看到的,btnDUM控件是Dummy以使MPE正常工作,但它实际上并未被style="display:none"标记隐藏。

但是,btnADD确实有效,因为它在服务器端调用Click()方法,用于刷新新行上的数据。您可能必须使用一点jScript将ROWINDEX传递给Click()方法,以使其与GridView一起使用。

顺便说一句,我的案例中的Click()方法&#34;控制&#34;手动MPE ......

protected void btnADD_Click(object sender, EventArgs e)
        {
            ClearADDform();
            mpeADD.Show();
        }

 protected void ClearADDform()
        {
            txtLOGIN.Text = string.Empty;
            cbISActive.Checked = true;
            txtPWD.Text = string.Empty;
            ddlAgent.SelectedIndex = -1;
        }

就我而言,上面的代码示例位于GridView之外,因此您需要进行调整。

但问题是,您仍然可以使用Ajax弹出窗口进行服务器端调用!

祝你好运。