ScriptManager.RegisterDataItem メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
部分ページ レンダリング中にカスタム データをコントロールに送信します。
オーバーロード
RegisterDataItem(Control, String) |
部分ページ レンダリング中にカスタム データをコントロールに送信します。 |
RegisterDataItem(Control, String, Boolean) |
部分ページ レンダリング中にカスタム データをコントロールに送信し、データが JSON (JavaScript Object Notation) 形式かどうかを指定します。 |
RegisterDataItem(Control, String)
部分ページ レンダリング中にカスタム データをコントロールに送信します。
public:
void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem);
member this.RegisterDataItem : System.Web.UI.Control * string -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String)
パラメーター
- control
- Control
データを受け取るコントロール。
- dataItem
- String
コントロールに送信されるデータ。
例外
control
が null
です。
RegisterDataItem(Control, String, Boolean) メソッドはポストバックの際に呼び出されます。
dataItem
は control
に既に登録されています。
例
次の例は、非同期ポストバック中にページ上の 2 つの Label コントロールにデータを送信する方法を示しています。 コントロールは Label コントロール内 UpdatePanel にありません。
注意
この例で送信されるデータは、説明のみを目的としています。 実際のアプリケーションでは、このメソッドを RegisterDataItem 使用してサーバーからカスタム データを送信します。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack)
{
System.Web.Script.Serialization.JavaScriptSerializer json =
new System.Web.Script.Serialization.JavaScriptSerializer();
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), true);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (ScriptManager1.IsInAsyncPostBack) Then
Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
注釈
このメソッドを RegisterDataItem 使用すると、データを受信するコントロールがコントロール内にあるかどうかに関係なく、非同期ポストバック中にサーバーからクライアントにデータを UpdatePanel 送信できます。
このメソッドは RegisterDataItem 、非同期ポストバック中にのみ呼び出すことができます。 ポストバックが非同期かどうかを判断するには、プロパティを使用します IsInAsyncPostBack 。 このメソッドは、次に設定されている名前 isJsonSerialized
のパラメーターを受け取るオーバーロードを false
呼び出します。 パラメーターが isJsonSerialized
設定 false
されている場合、文字列は JavaScript Object Notation (JSON) としてシリアル化されません。 JSON 形式の詳細については、「 JSON の概要 」Web サイトを参照してください。
メソッドに登録されているRegisterDataItemデータ項目は、オブジェクトの 、pageLoaded
およびendRequest
イベントPageRequestManager
の間にpageLoading
クライアント スクリプトでアクセスできます。 これらのイベントを処理すると、カスタム データがイベント引数オブジェクトに渡されます。 たとえば、イベントのハンドラーを pageLoading
指定すると、カスタム データがクラスに PageLoadingEventArgs
渡され、プロパティが dataItems
公開されます。
こちらもご覧ください
適用対象
RegisterDataItem(Control, String, Boolean)
部分ページ レンダリング中にカスタム データをコントロールに送信し、データが JSON (JavaScript Object Notation) 形式かどうかを指定します。
public:
void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem, bool isJsonSerialized);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem, bool isJsonSerialized);
member this.RegisterDataItem : System.Web.UI.Control * string * bool -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String, isJsonSerialized As Boolean)
パラメーター
- control
- Control
データを受け取るページ コントロール。
- dataItem
- String
コントロールに送信されるデータ。
- isJsonSerialized
- Boolean
dataItem
が JSON としてシリアル化されている場合は true
。それ以外の場合は false
。
例外
control
が null
です。
RegisterDataItem(Control, String, Boolean) メソッドはポストバックの際に呼び出されます。
dataItem
は control
に既に登録されています。
例
次の例は、非同期ポストバック中にページ上の 2 つの Label コントロールにデータを送信する方法を示しています。 コントロールは Label コントロール内 UpdatePanel にありません。 この例では、パラメーターを受け取らないオーバーロードを isJsonSerialized
示します。 それ以外の場合、オブジェクトのPageLoadingEventArgs
プロパティを取得するdataItems
プロシージャは、そのオーバーロードを使用しなかった場合と同じです。
注意
この例で送信されるデータは、説明のみを目的としています。 実際のアプリケーションでは、このメソッドを RegisterDataItem 使用してサーバーからカスタム データを送信します。 たとえば、データ項目を使用して、コントロール内にないクライアント要素を非表示にするか表示するかに関する情報を UpdatePanel 送信できます。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack)
{
System.Web.Script.Serialization.JavaScriptSerializer json =
new System.Web.Script.Serialization.JavaScriptSerializer();
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), true);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (ScriptManager1.IsInAsyncPostBack) Then
Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
注釈
このメソッドを RegisterDataItem 使用すると、データを受信するコントロールがコントロール内にあるかどうかに関係なく、非同期ポストバック中にサーバーからクライアントにデータを UpdatePanel 送信します。
登録するdataItem
パラメーターが JSON としてシリアル化されていない場合は、パラメーターを isJsonSerialized
>>に設定しますfalse
。control
これにより、クライアントに送信される文字列ごとに関数を使用 eval
する必要がなくなります。 JSON 形式の詳細については、「 JSON の概要 」Web サイトを参照してください。
このメソッドは RegisterDataItem 、非同期ポストバック中にのみ呼び出すことができます。 ポストバックが非同期かどうかを判断するには、プロパティを使用します IsInAsyncPostBack 。
メソッドを使用してRegisterDataItem登録されたデータ項目は、オブジェクトの 、pageLoaded
およびendRequest
イベントPageRequestManager
の間にpageLoading
クライアント スクリプトでアクセスできます。 これらのイベントを処理すると、カスタム データがイベント引数オブジェクトに渡されます。 たとえば、イベントのハンドラーを pageLoading
指定すると、カスタム データがクラスに PageLoadingEventArgs
渡され、プロパティが dataItems
公開されます。