2013-05-02 78 views
0

所以我使用Ajax控件工具包中的ModalPopupExtender控件。我的理解是,当我想将targetControlID设置为Gridview中的按钮时,我需要将ModalPopupExtender放在保存该按钮的模板中。在我的情况下:如何在ModalPopupExtender在gridview中时使用Ajax ModalPopUpExtender的.show()?

<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()函数来处理回发问题。

回答

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

这将会使这是隐藏在项目埋控制template.Let我知道,如果这个工程。

0

你也可以把modalpopup放在网格控件的外面。 它工作正常,如果它在网格外侧。

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

试试这个,一定会有效。

相关问题