C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ConfirmButtonExtenderについて


(過去ログ 81 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48151 / inTopicNo.1)  ConfirmButtonExtenderについて
  
□投稿者/ def (3回)-(2010/03/25(Thu) 22:34:13)

分類:[ASP.NET (C#)] 

環境 .Net Framework3.5 AjaxControlToolKit(3.0.3093.0)

お世話になります。
現在上記環境で開発を行っていますが、UpdatePanel の ContentTemplate に含まれた
ボタン + ConfirmButtonExtender + ModalPopupExtender にて不可思議な動作をしています。

初回のボタン押下では正しくポップアップされ、ポップアップパネル内のボタン押下でも
期待の動作を行います(OK押下ならOKボタンのサーバ処理、キャンセルならポストバックしない)

が、非同期ポストバック後に同様の操作を行うと、ポップアップ自体はされるのですが、
ポップアップパネル内のボタン押下(OK、キャンセルどちらでも)で、空のポストバック(?)が走り、
期待の動作になりません。
その後、再度ポップアップパネルを表示させ、パネル内のボタン押下を行えば動作はするのですが。

おそらくは非同期ポストバック時に実行される javascript では、通常のポストバック時に実行される
スクリプトと異なる点があるからだと思うのですが、よく分かりません。。。

UpdatePanel の外でまったく同じコードを書いた場合、期待通りの動作をします。


因みに、ModalPopupExtender と連動させない普通の ConfirmButtonExtender も試してみましたが
こちらはボタン押下前の非同期ポストバックの有無に関係なく動作しました。

何か解決法をご存じの方、ご教示願います。


以下、再現コードです。よろしくお願いいたします。
-------------------------------------------------------------------

<script runat="server" language="c#">
		protected void btnAsyncRun_Click ( object sender, EventArgs e )
		{
			Label1.Text = DateTime.Now.ToString ();
		}
		protected void btnPopup_Click ( object sender, EventArgs e )
		{
			Label2.Text = DateTime.Now.ToString ();
		}
		protected void Button1_Click ( object sender, EventArgs e )
		{
			Label3.Text = DateTime.Now.ToString ();
		}
		protected void Button2_Click ( object sender, EventArgs e )
		{
			Label4.Text = DateTime.Now.ToString ();
		}
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
		<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>

		<%// ボタン + ConfirmButtonExtender + ModalPopupExtender %>
		<asp:UpdatePanel ID="uppTEST" runat="server" UpdateMode="Conditional">
			<ContentTemplate>
				<asp:Button ID="btnAsyncRun" runat="server" Text="非同期ポストバック発生用" onclick="btnAsyncRun_Click" />
				<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
				<asp:Button ID="btnPopup" runat="server" Text="ポップアップ" CssClass="buttonStyle" OnClick="btnPopup_Click" />
				<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
				<asp:Panel ID="pnlConfirm" runat="server" CssClass="ConfirmPanel" style="display: none;">
					<asp:Label ID="lblCaption" runat="server" Text="OK押下でポストバック(非同期)" CssClass="ConfirmPanelLabel"></asp:Label>
					<br />
					<asp:Button ID="btnOK" runat="server" Text="OK" CssClass="ConfirmPanelOK" />
					&nbsp;
					<asp:Button ID="btnCancel" runat="server" Text="キャンセル" CssClass="ConfirmPanelCancel" />
				</asp:Panel>
				<ajaxToolkit:ConfirmButtonExtender ID="btnPopup_ConfirmButtonExtender" runat="server"
					Enabled="True"
					DisplayModalPopupID="btnPopup_ModalPopupExtender"
					OnClientCancel=""
					TargetControlID="btnPopup">
				</ajaxToolkit:ConfirmButtonExtender>
				<ajaxToolkit:ModalPopupExtender ID="btnPopup_ModalPopupExtender" runat="server"
					DynamicServicePath=""
					Enabled="True"
					PopupControlID="pnlConfirm"
					OkControlID="btnOK"
					CancelControlID="btnCancel" 
					BackgroundCssClass="ConfirmModalBackground"
					TargetControlID="btnPopup">
				</ajaxToolkit:ModalPopupExtender>		
			</ContentTemplate>
		</asp:UpdatePanel>
		<hr />
		<%// ボタン + ConfirmButtonExtender %>
		<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
			<ContentTemplate>
				<asp:Button ID="Button1" runat="server" Text="非同期ポストバック発生用" onclick="Button1_Click" />
				<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
				<asp:Button ID="Button2" runat="server" Text="ポップアップ" onclick="Button2_Click" />
				<asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
				<ajaxToolkit:ConfirmButtonExtender ID="Button2_ConfirmButtonExtender" runat="server" ConfirmText="OK押下でポストバック(非同期)" Enabled="True" TargetControlID="Button2">
				</ajaxToolkit:ConfirmButtonExtender>
			</ContentTemplate>
		</asp:UpdatePanel>
		
    </form>
</body>
</html>

引用返信 編集キー/
■48172 / inTopicNo.2)  Re[1]: ConfirmButtonExtenderについて
□投稿者/ もりお (207回)-(2010/03/26(Fri) 12:58:31)

No48151 (def さん) に返信

> ポップアップパネル内のボタン押下(OK、キャンセルどちらでも)で、空のポストバック(?)が走り、
> 期待の動作になりません。

公式サイトのデモンストレーションも同じ動作をするみたいです。
ConfirmButton Sample
http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ConfirmButton/ConfirmButton.aspx

可能であれば pnlConfirm のみ UpdatePanel 外に配置されてはいかがでしょうか。

引用返信 編集キー/
■48174 / inTopicNo.3)  Re[2]: ConfirmButtonExtenderについて
□投稿者/ def (4回)-(2010/03/26(Fri) 13:24:05)
No48172 (もりお さん) に返信

もりおさんありがとうございます。

ご指摘の方法で期待通りの動作になりました。
詳細は不明なままですが、解決できて感謝します。

ありがとうございました。

>
> ■No48151 (def さん) に返信
>
>>ポップアップパネル内のボタン押下(OK、キャンセルどちらでも)で、空のポストバック(?)が走り、
>>期待の動作になりません。
>
> 公式サイトのデモンストレーションも同じ動作をするみたいです。
> ConfirmButton Sample
> http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ConfirmButton/ConfirmButton.aspx
>
> 可能であれば pnlConfirm のみ UpdatePanel 外に配置されてはいかがでしょうか。
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -