マイページModalPopupExtender内に含まれるのUpdatePanel内IFRAMEにユーザ入力を別のASPXページをロードして第2の呼上のUpdatePanel内のiframeをリロードしないであろう。これは問題なく動作しますが、何らかの理由で[OK]ボタン(iframe内)を押してからModalPopupExtenderを閉じた後、適切なコールバックを行うことができるように、GetPostBackEventReferenceを使用してbtnOK asp:ボタンを登録しようとしました(たとえば、ユーザーがのは、つまり、この場合で複数のアクティビティを入力するのと同じ種類の別の入力を行いたい場合)はiframeを再開することができ。起こる問題はModalPopupExtenderの影が表示されていることですが、IFRAMEは、完全にその中にロードすることはありません。ModalPopupExtenderは
GetPostBackEventReferenceの代わりに__doPostBack('<%=btnOK .ClientID%>','OnClick');
を使用すると、2番目の呼び出しを行うことができますが、ボタンのC#イベントハンドラは発生しません。むしろポストバックのみを取得します。私は完全なポストバックを取得するので、私は推測している、何かがページをリセットし、すべてはやり直します。
私はこの問題を解決することができますどのように任意のアイデア?
私がやろうとしていることの背景を少し説明してください。ページを小さくし、入力を出力から分離するために、他のページをiframeとModalPopupExtendersに読み込むとき、ページはユーザーにコンテンツを表示することになっています。これを念頭に置いて、私は流れを制御し、必要なときに適切なコールバックを行うことができるようにする必要があります。 ModalPopupExtenderを含む
コード:
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head_Obudget" runat="server">
<script type="text/javascript">
$(document).ready(function() {
$('.CssClass_btnNewActivity').click(function() {
$('#frameInsertActivity').attr('src', 'InputForms/InsertActivity.aspx');
});
});
function InsertActivity_Done() {
<%= Page.ClientScript.GetPostBackEventReference(btnOK, String.Empty) %>;
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder_Obudget" runat="server">
<asp:UpdatePanel ID="upNewActivity" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btnOK" />
</Triggers>
<ContentTemplate>
<ajaxToolkit:ModalPopupExtender
BackgroundCssClass="ModalPopupBG"
ID="mpeNewActivity"
runat="server"
PopupControlID="divNewActivity"
TargetControlID="btnNewActivity"
OkControlID="btnOK"
CancelControlID="btnCancel"
DropShadow="true">
</ajaxToolkit:ModalPopupExtender>
<asp:button id="btnNewActivity" runat="server" CssClass="CssClass_btnNewActivity" text="New Activity" />
<div id="divNewActivity">
<iframe id="frameInsertActivity" width="500" height="100" frameBorder="0">
</iframe>
</div>
<div class="popup_Buttons"style="display: none;">
<asp:Button ID="btnOK" runat="server" OnClick="btnOK_Click" OnClientClick="InsertActivity_Done();" CssClass="CSS_Class_btnOK" />
<input id="btnCancel" type="button" value="Cancel" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
コードはiframe用:
<asp:Content ID="Content1" ContentPlaceHolderID="head_Empty" runat="server">
<style type="text/css">
body{background:white;}
</style>
<script type="text/javascript">
function okay() {
$(window.parent.document).find('.CSS_Class_btnOK').click();
}
function cancel() {
window.parent.document.getElementById('btnCancel').click();
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder_Empty" runat="server">
<table>
<tr>
<th colspan="2">
New Activity:
</th>
</tr>
<tr>
<td>
Name: <asp:TextBox ID="tbNewActivityName" runat="server" Width="200"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvNewActivityName" runat="server" ControlToValidate="tbNewActivityName" ValidationGroup="VG_NewActivity" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
</td>
<td>
<div class="popup_Buttons">
<asp:Button ID="btnInsertNewActivity" runat="server" Text="Add" OnClick="btnInsertNewActivity_Click" ValidationGroup="VG_NewActivity" />
<input id="btnCancel" onclick="cancel();" type="button" value="Cancel" />
</div>
</td>
</tr>
</table>
</asp:Content>