「クライアントコールバック」の編集履歴(バックアップ)一覧はこちら

クライアントコールバック - (2008/05/02 (金) 10:13:38) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

// 現在のページ名 *&this_page()  **概要 ASP.NETにおいて、クライアントサイドの処理⇒サーバーサイドの処理⇒クライアントサイドの処理、という本来ならば画面の再描画が必要な処理手順を、画面の再描画なしで行う方法。 これを、「クライアントコールバック」と呼ぶ。らしい。 -[[コールバック (情報工学) - Wikipedia>>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)]] ***参照 -[[ICallbackEventHandler インターフェイス (System.Web.UI)>>http://msdn.microsoft.com/ja-jp/library/system.web.ui.icallbackeventhandler(VS.80).aspx]] ***参考 -[[検証付きクライアント コールバックの実装例>>http://msdn.microsoft.com/ja-jp/library/ms366515(VS.80).aspx]] -[[ICallbackEventHandler利用時のエラーについて - MSDN フォーラム>>http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1192966&SiteID=7]] -[[ASP.NET Web ページでポストバックせずにクライアント コールバックを実装する>>http://msdn.microsoft.com/ja-jp/library/ms178208(VS.80).aspx]] ***元ネタ -[[クライアント コールバックの実装例 (C#)>>http://msdn.microsoft.com/ja-jp/library/ms178210.aspx]] -[[「ASP.NET 2.0」クライアントコールバックのサンプル>>http://blogs.sqlpassj.org/mitsugi/archive/2006/01/17/15833.aspx]] **前提条件 -[[新しいwebサイトの作成]] **手順 下記のソースは、元ネタ([[「ASP.NET 2.0」クライアントコールバックのサンプル>>http://blogs.sqlpassj.org/mitsugi/archive/2006/01/17/15833.aspx]])にコメントとインデント等を追加しただけのもの。 default.aspx #highlight(html){{ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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 id="Head1" runat="server"> <title>クライアントコールバック - C#(ASP.NET V2.0)</title> <script type="text/javascript"> <!-- function LookUpStock() { var lb = document.forms[0].lbStock; var product = lb.options[lb.selectedIndex].text; CallServer(product, ""); } function ReceiveServerData(arg, context) { Results.innerText = arg; } --> </script> </head> <body onload="LookUpStock();"> <form id="frmMain" runat="server"> <div> <asp:ListBox ID="lbStock" runat="server"></asp:ListBox> <br /> <br /> <button onclick="LookUpStock();">Look Up Stock</button> <br /> <br /> Items in stock: <span id="Results"></span> <br /> </div> </form> </body> </html> }} default.aspx.cs #highlight(csharp){{ using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections.Specialized; public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler { private string returnValue; private ListDictionary catalog; void Page_Load(object sender, EventArgs e) { // クライアント側コールバックスクリプト設定 ClientScriptManager clientScriptManager = (ClientScriptManager)Page.ClientScript; string cbReference = clientScriptManager.GetCallbackEventReference(this, "arg", "ReceiveServerData", ""); string callbackScript = "function CallServer(arg, context) {" + cbReference + "; }"; clientScriptManager.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true); // リストボックス this.catalog = new ListDictionary(); this.catalog.Add("monitor", 12); this.catalog.Add("laptop", 10); this.catalog.Add("keyboard", 23); this.catalog.Add("mouse", 17); this.lbStock.DataSource = this.catalog; this.lbStock.DataTextField = "key"; this.lbStock.DataBind(); lbStock.SelectedIndex = 0; } #region ICallbackEventHandler メンバ public string GetCallbackResult() { return this.returnValue; } public void RaiseCallbackEvent(string eventArgument) { if (this.catalog[eventArgument] == null) { this.returnValue = "-1"; } else { this.returnValue = this.catalog[eventArgument].ToString(); } } #endregion } }} &img(5.jpg)
// 現在のページ名 *&this_page()  **概要 ASP.NETにおいて、クライアントサイドの処理⇒サーバーサイドの処理⇒クライアントサイドの処理、という本来ならば画面の再描画が必要な処理手順を、画面の再描画なしで行う方法。 これを、「クライアントコールバック」と呼ぶ。らしい。 -[[コールバック (情報工学) - Wikipedia>>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)]] ***参照 -[[ICallbackEventHandler インターフェイス (System.Web.UI)>>http://msdn.microsoft.com/ja-jp/library/system.web.ui.icallbackeventhandler(VS.80).aspx]] ***参考 -[[検証付きクライアント コールバックの実装例>>http://msdn.microsoft.com/ja-jp/library/ms366515(VS.80).aspx]] -[[ICallbackEventHandler利用時のエラーについて - MSDN フォーラム>>http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1192966&SiteID=7]] -[[ASP.NET Web ページでポストバックせずにクライアント コールバックを実装する>>http://msdn.microsoft.com/ja-jp/library/ms178208(VS.80).aspx]] ***元ネタ -[[クライアント コールバックの実装例 (C#)>>http://msdn.microsoft.com/ja-jp/library/ms178210.aspx]] -[[「ASP.NET 2.0」クライアントコールバックのサンプル>>http://blogs.sqlpassj.org/mitsugi/archive/2006/01/17/15833.aspx]] **前提条件 -[[新しいwebサイトの作成]] **手順 コールバックを実装したwebユーザーコントロール(ascx)を、default.aspxに設置する。 具体的には、以下のソースをコピーして実行。 default.aspx #highlight(linenumber,html){{ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %> <!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 id="Head1" runat="server"> <title>クライアントコールバック - C#(ASP.NET V2.0)</title> </head> <body> <form id="frmMain" runat="server"> <div> <uc1:WebUserControl ID="WebUserControl1" runat="server" /> </div> </form> </body> </html> }} default.aspx #highlight(linenumber,csharp){{ using System; using System.Web.UI; public partial class _Default : System.Web.UI.Page { void Page_Load(object sender, EventArgs e) { } } }} WebUserControl.ascx #highlight(linenumber,html){{ <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> <script type="text/javascript"> <!-- /// <summary> /// コールバックを発生させるCallServer()を呼ぶ為のクライアントスクリプト /// </summary> function LookUpStock() { var lb = document.getElementById("<%= this.lbStock.ClientID %>"); var product = lb.options[lb.selectedIndex].text; CallServer(product, ""); } /// <summary> /// コールバックの結果を受け取るクライアントスクリプト /// </summary> /// <param name="arg"></param> /// <param name="context"></param> function ReceiveServerData(arg, context) { Results.innerText = arg; } --> </script> <div> <asp:ListBox ID="lbStock" runat="server"></asp:ListBox> <br /> <br /> <button onclick="LookUpStock();">Look Up Stock</button> <br /> <br /> Items in stock: <span id="Results"></span> <br /> </div> }} WebUserControl.ascx.cs #highlight(linenumber,csharp){{ using System; using System.Web.UI; using System.Collections.Specialized; public partial class WebUserControl : System.Web.UI.UserControl, System.Web.UI.ICallbackEventHandler { private string returnValue; private ListDictionary catalog; protected void Page_Load(object sender, EventArgs e) { /// <summary> /// コールバックを発生させるクライアントスクリプト「CallServer」の定義。 /// CallServerの実体は、ClientScriptManagerクラスによって動的に生成される。 /// </summary> ClientScriptManager clientScriptManager = (ClientScriptManager)Page.ClientScript; string cbReference = clientScriptManager.GetCallbackEventReference(this, "arg", "ReceiveServerData", ""); string callbackScript = "function CallServer(arg, context) {" + cbReference + "; }"; clientScriptManager.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true); // リストボックス this.catalog = new ListDictionary(); this.catalog.Add("monitor", 12); this.catalog.Add("laptop", 10); this.catalog.Add("keyboard", 23); this.catalog.Add("mouse", 17); this.lbStock.DataSource = this.catalog; this.lbStock.DataTextField = "key"; this.lbStock.DataBind(); this.lbStock.SelectedIndex = 0; } #region ICallbackEventHandler メンバ /// <summary> /// コールバックが実行される際に呼ばれるメソッド /// </summary> /// <param name="eventArgument">クライアントサイドからの引数</param> public void RaiseCallbackEvent(string eventArgument) { if (this.catalog[eventArgument] == null) { this.returnValue = "-1"; } else { this.returnValue = this.catalog[eventArgument].ToString(); } } /// <summary> /// コールバックの実行後、呼ばれるメソッド。 /// 戻り値がクライアントサイドに渡される。 /// </summary> /// <returns>クライアントサイドに引き渡す値</returns> public string GetCallbackResult() { return this.returnValue; } #endregion } }} &img(5.jpg)

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー