我想要一個代表輸入對話框的UserControl(帶有可定製標籤和文本框的面板)。此用戶控件需要通過ModalPopupExtender打開。 我開始用下面的解決方案,它的工作原理,但不是在UC:UserControl中的ModalPopupExtender
<!-- Popup to add brand -->
<asp:Panel ID="pnlAddPopup" DefaultButton="cmdOk" runat="server" style="display: none;">
<atk:ModalPopupExtender ID="popupExtender" runat="server" TargetControlID="cmdAdd" PopupControlID="pnlAddPopup" CancelControlID="cmdAbbrechen" BackgroundCssClass="modalBackground" />
<div id="Div1" style="border-style: none; padding: 5px;" runat="server">
<table style="border: 0">
<tr>
<td style="background-color: #CCCCCC; height: 15px; text-align: right" />
</tr>
<tr>
<td style="background-color: #FFE580;">
<div style="padding: 10px;">
<cc1:SDDataLabel ID="name" runat="server" Text="Name"/>
<cc1:SDTextBox ID="txtInput" Width="300" runat="server"/>
</div>
</td>
</tr>
<tr>
<td style="background-color: #FFE580; height: 20px; text-align: center">
<cc1:SDButton ID="cmdOk" OnClick="CmdAddOkClick" CssClass="button" runat="server" />
<cc1:SDButton ID="cmdAbbrechen" CssClass="button" runat="server" />
</td>
</tr>
</table>
</div>
</asp:Panel>
我寧願什麼:如果我可以添加一個單行像
<uc1:InputPopup ID="inputPopup" runat="server" TargetControlID="cmdAdd"/>
所以我創建了以下「InputPopup」UserControl:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="InputPopup.ascx.cs" Inherits="ABC.InputPopup" %>
<%@ Register Assembly="ABC" TagPrefix="cc1" Namespace="ABC" %>
<atk:ModalPopupExtender ID="popupExtender" runat="server" PopupControlID="pnlAddPopup" CancelControlID="cmdAbbrechen" BackgroundCssClass="modalBackground" />
<asp:Panel ID="pnlAddPopup" DefaultButton="cmdOk" runat="server" style="display: none;">
<div id="Div1" style="border-style: none; padding: 5px;" runat="server">
<table style="border: 0">
<tr>
<td style="background-color: #CCCCCC; height: 15px; text-align: right" />
</tr>
<tr>
<td style="background-color: #FFE580;">
<div style="padding: 10px;">
<cc1:SDDataLabel ID="name" runat="server" Text="Name"/>
<cc1:SDTextBox ID="txtInput" Width="300" runat="server"/>
</div>
</td>
</tr>
<tr>
<td style="background-color: #FFE580; height: 20px; text-align: center">
<cc1:SDButton ID="cmdOk" OnClick="CmdAddOkClick" CssClass="button" runat="server" />
<cc1:SDButton ID="cmdAbbrechen" CssClass="button" runat="server" />
</td>
</tr>
</table>
</div>
</asp:Panel>
此外,我有文件後面的代碼來定義屬性TargetControlID。 公衆的TargetControlID的TargetControlID { 集合{popupExtender.TargetControlID =值;}}
該解決方案將是巨大的,但不工作,因爲ModalPopupExtender未在cmdAdd聽,因爲cmdAdd被放置在父控制... 我的問題:是否有可能覆蓋ModalPopupExtender的TargetControlID設置程序,以便偵聽正確的控件點擊事件(位於父控件中的事件)? 或者是否有任何其他解決方案來解決我的問題?我讀了使用 $(「#<%= popupExtender.ClientID」)show() 作爲OnControllerClick函數在TargetControl上,但我無法在父控件中執行此操作,因爲popupExtender會在UC中。
以下解決方案還有效。但我寧願「一個線UC溶液」之上,而不ModalPopupExtender在父控制
<cc1:SDButton ID="cmdAdd" CssClass="button" runat="server" />
<!-- Popup to add brand -->
<atk:ModalPopupExtender ID="popupExtender" runat="server" TargetControlID="cmdAdd" PopupControlID="pnlAddPopup" BackgroundCssClass="modalBackground" />
<asp:Panel ID="pnlAddPopup" runat="server">
<uc1:InputPopup ID="inputPopup" runat="server"/>
</asp:Panel>
我找到了合適的解決方案。我會稍微發佈它... – Adrian
我找到了我的理想解決方案。除了焦點設置的小問題之外,該解決方案還可以正常工作。其中一個關鍵問題/錯誤是我使用$('#ModalBehaviorId')而不是$ find('ModalBehaviorId)。如果我理解正確,$()返回一個Ajax對象,$ find()返回一個ModalPopupExtender對象。 爲了更清楚起見,我將我的解決方案發布在新帖子中。 – Adrian