次の方法で共有


ScriptManager.RegisterDataItem メソッド

定義

部分ページ レンダリング中にカスタム データをコントロールに送信します。

オーバーロード

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

コントロールに送信されるデータ。

例外

controlnullです。

RegisterDataItem(Control, String, Boolean) メソッドはポストバックの際に呼び出されます。

dataItemcontrol に既に登録されています。

次の例は、非同期ポストバック中にページ上の 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

例外

controlnullです。

RegisterDataItem(Control, String, Boolean) メソッドはポストバックの際に呼び出されます。

dataItemcontrol に既に登録されています。

次の例は、非同期ポストバック中にページ上の 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 >>に設定しますfalsecontrol これにより、クライアントに送信される文字列ごとに関数を使用 eval する必要がなくなります。 JSON 形式の詳細については、「 JSON の概要 」Web サイトを参照してください。

このメソッドは RegisterDataItem 、非同期ポストバック中にのみ呼び出すことができます。 ポストバックが非同期かどうかを判断するには、プロパティを使用します IsInAsyncPostBack

メソッドを使用してRegisterDataItem登録されたデータ項目は、オブジェクトの 、pageLoadedおよびendRequestイベントPageRequestManagerの間にpageLoadingクライアント スクリプトでアクセスできます。 これらのイベントを処理すると、カスタム データがイベント引数オブジェクトに渡されます。 たとえば、イベントのハンドラーを pageLoading 指定すると、カスタム データがクラスに PageLoadingEventArgs 渡され、プロパティが dataItems 公開されます。

こちらもご覧ください

適用対象