【问题标题】:How to use the .show() of Ajax ModalPopUpExtender when ModalPopupExtender is within a gridview?当 ModalPopupExtender 在网格视图中时,如何使用 Ajax ModalPopUpExtender 的 .show()?
【发布时间】:2013-05-02 11:16:53
【问题描述】:

所以我正在使用 Ajax 控件工具包中的 ModalPopupExtender 控件。我的理解是,当我想将 targetControlID 设置为 Gridview 中的按钮时,我需要将 ModalPopupExtender 放在包含该按钮的模板中。就我而言:

<asp:TemplateField>
           <ItemTemplate>
               <asp:LinkButton ID="lbtnDeleteWidget" runat="server" Text="Delete" CommandName="DeleteWidget" CommandArgument="<%# Container.DataItemIndex %>"></asp:LinkButton>
           </ItemTemplate>
           <FooterStyle HorizontalAlign="Right" />
           <FooterTemplate>
           <asp:Button ID="btnAddNewWidget" runat="server" CssClass="buttonStyle" Text="Add New Widget" onclick="btnAddNewWidget_Click"/>

           <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
           BackgroundCssClass="modalBackground"
           DropShadow="true"
           OkControlID="btnSaveWidget"
           CancelControlID="aCloseX"
           PopupControlID="Panel1"
           TargetControlID="btnAddNewWidget" /> 
      </FooterTemplate>
</asp:TemplateField>

现在,这运行良好,按下按钮时会出现模式弹出窗口,一切都很好。但是,ModalPopUpExtender 有一个讨厌的习惯,即在回发时关闭模式。我的弹出窗口包含一些必须执行回发的 DropDownLists(它需要执行一些相关代码)。每当发生这种情况时,模式就会关闭。

使用 show() 函数来解决这个问题。例如,每当下拉列表执行回发时,函数都会以 ModalPopupExtender1.Show(); 结束。

问题:

ModalPopupExtender1 在我当前的上下文中不存在,因为我在模板字段中定义了它,所以它可以工作。我该如何解决?我想参考我的 ModalPopupExtender1 并使用 .show() 函数来处理回发问题。

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    像这样搜索嵌套的模态弹出扩展器。

    VB.NET

    Dim ModalPopupExtender1 = CType(YourGridView.FooterRow.Findcontrol("ModalPopupExtender1"), AjaxControlToolkit.ModalPopupExtender)
    ModalPopupExtender1.Show()
    

    C#

    AjaxControlToolkit.ModalPopupExtender ModalPopupExtender1 = (AjaxControlToolkit.ModalPopupExtender)YourGridView.FooterRow.Findcontrol("ModalPopupExtender1");
    ModalPopupExtender1.Show();
    

    这将暴露隐藏在项目模板中的隐藏控件。让我知道这是否有效。

    【讨论】:

      【解决方案2】:

      您也可以将 modalpopup 放在网格控件之外。 如果它在网格之外,它就可以正常工作。

      而且你不需要使用findcontrol,你可以直接编写Modalpopup.show()方法来再次显示modalpopup。

      试试这个,这肯定会奏效。

      【讨论】:

        猜你喜欢
        • 2016-03-15
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 2014-06-25
        相关资源
        最近更新 更多