DoboWiki
Top
> .NETプログラミング研究/83 をテンプレートにして作成
.NETプログラミング研究/83 をテンプレートにして作成
開始行:
#title(Microsoft ASP.NET AJAXを使う4)
#navi(.NETプログラミング研究)
#contents
*Microsoft ASP.NET AJAXを使う4 [#g4fc36d6]
**現在の非同期ポストバックをキャンセルする [#t4e237de]
現在実行している非同期ポストバックをキャンセルするには、...
前号の「[[UpdateProgressコントロールを使って、現在の状況...
まず、非同期ポストバックをキャンセルするJavaScriptを記述...
#code(javascript){{
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
}}
isInAsyncPostBackプロパティで現在非同期ポストバックを実行...
ここではUpdateProgressコントロール内にボタンを配置して、...
#code(html){{
<asp:UpdateProgress ID="UpdateProgress1" runat="server" D...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" value="中止"
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
}}
このようにして完成したコードの全体は、次のようになります。
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub PackageSizeList_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As EventArgs)
'3秒停止する
System.Threading.Thread.Sleep(3000)
Dim ddl As DropDownList = CType(sender, DropDownL...
If ddl.SelectedValue <> "0" Then
Dim fee As Integer = _
Me.GetYoupackFee(Integer.Parse(ddl.Select...
ResultLabel.Text = String.Format("料金は {0}...
Else
ResultLabel.Text = ""
End If
End Sub
Public Function GetYoupackFee(ByVal packSize As Integ...
If packSize <= 60 Then
Return 600
ElseIf packSize <= 80 Then
Return 800
ElseIf packSize <= 100 Then
Return 1000
ElseIf packSize <= 120 Then
Return 1200
ElseIf packSize <= 140 Then
Return 1400
ElseIf packSize <= 160 Then
Return 1600
ElseIf packSize <= 170 Then
Return 1700
Else
Return -1
End If
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" va...
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void PackageSizeList_SelectedIndexChanged(
object sender, EventArgs e)
{
//3秒停止する
System.Threading.Thread.Sleep(3000);
DropDownList ddl = (DropDownList)sender;
if (ddl.SelectedValue != "0")
{
int fee = this.GetYoupackFee(int.Parse(ddl.Se...
ResultLabel.Text = string.Format("料金は {0}...
}
else
{
ResultLabel.Text = "";
}
}
public int GetYoupackFee(int packSize)
{
if (packSize <= 60)
return 600;
else if (packSize <= 80)
return 800;
else if (packSize <= 100)
return 1000;
else if (packSize <= 120)
return 1200;
else if (packSize <= 140)
return 1400;
else if (packSize <= 160)
return 1600;
else if (packSize <= 170)
return 1700;
else
return -1;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" va...
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
このコードを実行して、DropDownListで荷物の大きさを選択す...
***サーバー処理はキャンセルされない [#jc71341a]
勘違いしてはならないのは、abortPostBackメソッドはサーバー...
サーバー側の処理をキャンセルするには、キャンセルできるよ...
補足:MSDNの「[[非同期ポストバックのキャンセル>http://msd...
**非同期ポストバックの要求をキャンセルする [#dbd20fd2]
次に、新たな非同期ポストバックの要求をキャンセルする方法...
新たな非同期ポストバックの要求をキャンセルするには、initi...
ここでもまた「[[UpdateProgressコントロールを使って、現在...
JavaScriptは次のようになります。非常に簡単ですので、説明...
#code(javascript){{
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
}
}}
完成したコード全体は、次のようになります。<html>の部分以...
#code(html){{
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
//PageRequestManagerを作成
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
この例では新たな非同期ポストバックをキャンセルしてもその...
***2重送信を防止する [#o411cc73]
このような方法で二重送信を防止できますが、実際には、トリ...
以下にトリガーを無効状態にすることにより二重送信を防止す...
#code(javascript){{
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
//PageRequestManagerを作成
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
//DropDownListを無効にする
$get('PackageSizeList').disabled = true;
}
//非同期ポストバックの完了
function EndRequest(sender, args)
{
//DropDownListを有効にする
$get('PackageSizeList').disabled = false;
}
}}
***非同期ポストバックに優先順位をつける [#u38e084a]
MSDNの「[[特定の非同期ポストバックの優先的処理>http://msd...
-以下の処理は、initializeRequestイベントハンドラで行う。
-前回非同期ポストバックを行ったトリガーのIDを記憶しておく。
-非同期ポストバックが現在実行中の時は、新たな非同期ポスト...
-非同期ポストバックが現在実行中で、新たな非同期ポストバッ...
つまり、非同期ポストバックの種類をトリガーのIDを使って調...
なお、「[[Giving Precedence to a Specific Asynchronous Po...
**コメント [#h2797a37]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2008-0...
終了行:
#title(Microsoft ASP.NET AJAXを使う4)
#navi(.NETプログラミング研究)
#contents
*Microsoft ASP.NET AJAXを使う4 [#g4fc36d6]
**現在の非同期ポストバックをキャンセルする [#t4e237de]
現在実行している非同期ポストバックをキャンセルするには、...
前号の「[[UpdateProgressコントロールを使って、現在の状況...
まず、非同期ポストバックをキャンセルするJavaScriptを記述...
#code(javascript){{
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
}}
isInAsyncPostBackプロパティで現在非同期ポストバックを実行...
ここではUpdateProgressコントロール内にボタンを配置して、...
#code(html){{
<asp:UpdateProgress ID="UpdateProgress1" runat="server" D...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" value="中止"
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
}}
このようにして完成したコードの全体は、次のようになります。
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub PackageSizeList_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As EventArgs)
'3秒停止する
System.Threading.Thread.Sleep(3000)
Dim ddl As DropDownList = CType(sender, DropDownL...
If ddl.SelectedValue <> "0" Then
Dim fee As Integer = _
Me.GetYoupackFee(Integer.Parse(ddl.Select...
ResultLabel.Text = String.Format("料金は {0}...
Else
ResultLabel.Text = ""
End If
End Sub
Public Function GetYoupackFee(ByVal packSize As Integ...
If packSize <= 60 Then
Return 600
ElseIf packSize <= 80 Then
Return 800
ElseIf packSize <= 100 Then
Return 1000
ElseIf packSize <= 120 Then
Return 1200
ElseIf packSize <= 140 Then
Return 1400
ElseIf packSize <= 160 Then
Return 1600
ElseIf packSize <= 170 Then
Return 1700
Else
Return -1
End If
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" va...
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void PackageSizeList_SelectedIndexChanged(
object sender, EventArgs e)
{
//3秒停止する
System.Threading.Thread.Sleep(3000);
DropDownList ddl = (DropDownList)sender;
if (ddl.SelectedValue != "0")
{
int fee = this.GetYoupackFee(int.Parse(ddl.Se...
ResultLabel.Text = string.Format("料金は {0}...
}
else
{
ResultLabel.Text = "";
}
}
public int GetYoupackFee(int packSize)
{
if (packSize <= 60)
return 600;
else if (packSize <= 80)
return 800;
else if (packSize <= 100)
return 1000;
else if (packSize <= 120)
return 1200;
else if (packSize <= 140)
return 1400;
else if (packSize <= 160)
return 1600;
else if (packSize <= 170)
return 1700;
else
return -1;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//非同期ポストバックをキャンセルする
function CancelPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
if (prm.get_isInAsyncPostBack())
{
//非同期ポストバック中のときは、キャンセルする
prm.abortPostBack();
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...<br />
<input id="cancelbutton" type="button" va...
onclick="CancelPostBack()" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
このコードを実行して、DropDownListで荷物の大きさを選択す...
***サーバー処理はキャンセルされない [#jc71341a]
勘違いしてはならないのは、abortPostBackメソッドはサーバー...
サーバー側の処理をキャンセルするには、キャンセルできるよ...
補足:MSDNの「[[非同期ポストバックのキャンセル>http://msd...
**非同期ポストバックの要求をキャンセルする [#dbd20fd2]
次に、新たな非同期ポストバックの要求をキャンセルする方法...
新たな非同期ポストバックの要求をキャンセルするには、initi...
ここでもまた「[[UpdateProgressコントロールを使って、現在...
JavaScriptは次のようになります。非常に簡単ですので、説明...
#code(javascript){{
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
}
}}
完成したコード全体は、次のようになります。<html>の部分以...
#code(html){{
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ゆうパック送料検索</title>
</head>
<body>
<h1>ゆうパック送料検索</h1>
<p>同一都道府県内への配達、重量30kgまで</p>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="ser...
</asp:ScriptManager>
<script type="text/javascript">
//<![CDATA[
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
//PageRequestManagerを作成
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
}
//]]>
</script>
<asp:Label
ID="Label1"
runat="server"
Text="荷物の大きさ(縦・横・高さの合計): "
AssociatedControlID="PackageSizeList">
</asp:Label>
<asp:DropDownList
ID="PackageSizeList"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="PackageSizeList_Selec...
<asp:ListItem Value="0">(選択してください)<...
<asp:ListItem Value="60">60cmまで</asp:ListIt...
<asp:ListItem Value="80">80cmまで</asp:ListIt...
<asp:ListItem Value="100">100cmまで</asp:List...
<asp:ListItem Value="120">120cmまで</asp:List...
<asp:ListItem Value="140">140cmまで</asp:List...
<asp:ListItem Value="160">160cmまで</asp:List...
<asp:ListItem Value="170">170cmまで</asp:List...
</asp:DropDownList>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="ResultLabel" runat="server...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Pack...
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="s...
<ProgressTemplate>
読み込み中...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
}}
この例では新たな非同期ポストバックをキャンセルしてもその...
***2重送信を防止する [#o411cc73]
このような方法で二重送信を防止できますが、実際には、トリ...
以下にトリガーを無効状態にすることにより二重送信を防止す...
#code(javascript){{
//アプリケーションのloadイベントハンドラを追加
Sys.Application.add_load(ApplicationLoad)
//アプリケーションのloadイベントハンドラ
function ApplicationLoad(sender, args)
{
//PageRequestManagerを作成
var prm = Sys.WebForms.PageRequestManager.getInstance...
//イベントハンドラを追加
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
}
//非同期ポストバックの開始
function InitializeRequest(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance...
//非同期ポストバックが実行中のときは、新たなポストバ...
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}
//DropDownListを無効にする
$get('PackageSizeList').disabled = true;
}
//非同期ポストバックの完了
function EndRequest(sender, args)
{
//DropDownListを有効にする
$get('PackageSizeList').disabled = false;
}
}}
***非同期ポストバックに優先順位をつける [#u38e084a]
MSDNの「[[特定の非同期ポストバックの優先的処理>http://msd...
-以下の処理は、initializeRequestイベントハンドラで行う。
-前回非同期ポストバックを行ったトリガーのIDを記憶しておく。
-非同期ポストバックが現在実行中の時は、新たな非同期ポスト...
-非同期ポストバックが現在実行中で、新たな非同期ポストバッ...
つまり、非同期ポストバックの種類をトリガーのIDを使って調...
なお、「[[Giving Precedence to a Specific Asynchronous Po...
**コメント [#h2797a37]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2008-0...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]