所以我正在使用 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() 函数来处理回发问题。