ScriptManager.RegisterDataItem ScriptManager.RegisterDataItem ScriptManager.RegisterDataItem Method

Определение

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы.Sends custom data to controls during partial-page rendering.

Перегрузки

RegisterDataItem(Control, String) RegisterDataItem(Control, String) RegisterDataItem(Control, String)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы.Sends custom data to a control during partial-page rendering.

RegisterDataItem(Control, String, Boolean) RegisterDataItem(Control, String, Boolean) RegisterDataItem(Control, String, Boolean)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы и указывает, имеют ли данные формат JavaScript Object Notation (JSON).Sends custom data to a control during partial-page rendering, and indicates whether the data is in JavaScript Object Notation (JSON) format.

RegisterDataItem(Control, String) RegisterDataItem(Control, String) RegisterDataItem(Control, String)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы.Sends custom data to a control during partial-page rendering.

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

Параметры

control
Control Control Control

Элемент управления, получающий данные.The control that is receiving the data.

dataItem
String String String

Данные, посланные элементу управления.The data that is sent to the control.

Исключения

Метод RegisterDataItem(Control, String, Boolean) вызывается во время обратной передачи.The RegisterDataItem(Control, String, Boolean) method is called during a postback.

Параметр dataItem уже зарегистрирован для элемента управления control.dataItem is already registered for control.

Примеры

В следующем примере показано, как отправить данные в два Label элемента управления на странице во время асинхронной обратной передачи.The following example shows how to send data to two Label controls on a page during an asynchronous postback. Элементы управления не находятся UpdatePanel внутри элемента управления. LabelThe Label controls are not inside an UpdatePanel control.

Примечание

Данные, отправляемые в этом примере, являются только иллюстрацией.The data that is sent in this example is for illustration only. В реальном приложении для отправки пользовательских данных с сервера используется RegisterDataItem метод.In a real-world application, you would use the RegisterDataItem method to send custom data from the server.

<%@ 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>

Комментарии

Используйте метод для отправки данных с сервера клиенту во время асинхронной обратной передачи независимо от того, находится ли элемент управления, получающий данные, UpdatePanel внутри элемента управления. RegisterDataItemUse the RegisterDataItem method to send data from the server to the client during asynchronous postbacks, regardless of whether the control receiving the data is inside an UpdatePanel control.

RegisterDataItem Метод можно вызывать только во время асинхронной обратной передачи.The RegisterDataItem method can be called only during an asynchronous postback. Чтобы определить, является ли обратная передача асинхронной IsInAsyncPostBack , используйте свойство.To determine whether a postback is asynchronous, use the IsInAsyncPostBack property. Этот метод вызывает перегрузку, которая принимает параметр с isJsonSerialized именем, falseравным.This method invokes the overload that takes a parameter named isJsonSerialized that is set to false. Если параметр имеет falseзначение, строка не сериализуется как нотация объектов JavaScript (JSON). isJsonSerializedWhen the isJsonSerialized parameter is set to false, the string is not serialized as JavaScript Object Notation (JSON). Дополнительные сведения о формате JSON см. в разделе Знакомство с веб-сайтом JSON .For more information about the JSON format, see the Introducing JSON Web site.

Доступ к элементам данных, зарегистрированным с RegisterDataItem помощью метода, можно получить в клиентском скрипте pageLoaded pageLoadingво время endRequest событий PageRequestManager , и объекта.The data items that are registered with the RegisterDataItem method can be accessed in client script during the pageLoading, pageLoaded, and endRequest events of the PageRequestManager object. При обработке этих событий пользовательские данные передаются в объект аргумента события.When you handle these events, the custom data is passed in an event argument object. Например, если вы предоставляете обработчик для pageLoading события, пользовательские данные передаются PageLoadingEventArgs в класс, который предоставляет свойство.For example, if you provide a handler for the pageLoading event, the custom data is passed in the PageLoadingEventArgs class, which exposes a property.

Дополнительно

RegisterDataItem(Control, String, Boolean) RegisterDataItem(Control, String, Boolean) RegisterDataItem(Control, String, Boolean)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы и указывает, имеют ли данные формат JavaScript Object Notation (JSON).Sends custom data to a control during partial-page rendering, and indicates whether the data is in JavaScript Object Notation (JSON) format.

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

Параметры

control
Control Control Control

Элемент управления страницы, получающий данные.The page control that is receiving the data.

dataItem
String String String

Данные, посланные элементу управления.The data that is sent to the control.

isJsonSerialized
Boolean Boolean Boolean

true для указания, что элемент данных dataItem сериализован как JSON; в противном случае ─ false.true to indicate that dataItem is serialized as JSON; otherwise, false.

Исключения

Свойство control имеет значение null.control is null.

Метод RegisterDataItem(Control, String, Boolean) вызывается во время обратной передачи.The RegisterDataItem(Control, String, Boolean) method is called during a postback.

Параметр dataItem уже зарегистрирован для элемента управления control.dataItem is already registered for control.

Примеры

В следующем примере показано, как отправить данные в два Label элемента управления на странице во время асинхронной обратной передачи.The following example shows how to send data to two Label controls on a page during an asynchronous postback. Элементы управления не находятся UpdatePanel внутри элемента управления. LabelThe Label controls are not inside an UpdatePanel control. В этом примере показана перегрузка, которая не принимает isJsonSerialized параметр.This example shows the overload that does not take the isJsonSerialized parameter. В противном случае процедура получения dataItems свойства PageLoadingEventArgs объекта будет такой же, как если бы вы не использовали эту перегрузку.Otherwise, the procedure for retrieving the dataItems property of the PageLoadingEventArgs object is the same as if you did not use that overload.

Примечание

Данные, отправляемые в этом примере, являются только иллюстрацией.The data that is sent in this example is for illustration only. В реальном приложении для отправки пользовательских данных с сервера используется RegisterDataItem метод.In a real-world application, you would use the RegisterDataItem method to send custom data from the server. Например, элемент данных можно использовать для отправки сведений о том, следует ли скрывать или отображать клиентские элементы, не находящиеся UpdatePanel внутри элемента управления.For example, you could use the data item to send information about whether to hide or show client elements that are not inside an UpdatePanel control.

<%@ 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 внутри элемента управления.You use the RegisterDataItem method to send data from the server to the client during asynchronous postbacks, regardless of whether the control receiving the data is inside an UpdatePanel control.

Если параметр, регистрируемый для control , не сериализован isJsonSerialized как JSON, задайте для falseпараметра значение. dataItemIf the dataItem parameter that you register for control is not serialized as JSON, set the isJsonSerialized parameter to false. Это позволяет избежать необходимости использовать eval функцию для каждой строки, отправленной клиенту.This avoids the need to use the eval function for each string that is sent to the client. Дополнительные сведения о формате JSON см. в разделе Знакомство с веб-сайтом JSON .For more information about the JSON format, see the Introducing JSON Web site.

RegisterDataItem Метод можно вызывать только во время асинхронной обратной передачи.The RegisterDataItem method can be called only during an asynchronous postback. Чтобы определить, является ли обратная передача асинхронной IsInAsyncPostBack , используйте свойство.To determine whether a postback is asynchronous, use the IsInAsyncPostBack property.

Доступ к элементам данных, зарегистрированным с помощью RegisterDataItem метода, можно получить в клиентском скрипте pageLoadingво pageLoadedвремя событий endRequest PageRequestManager , и объекта.The data items that are registered by using the RegisterDataItem method can be accessed in client script during the pageLoading, pageLoaded, and endRequest events of the PageRequestManager object. При обработке этих событий пользовательские данные передаются в объект аргумента события.When you handle these events, the custom data is passed in an event argument object. Например, если вы предоставляете обработчик для pageLoading события, пользовательские данные передаются PageLoadingEventArgs в класс, который предоставляет свойство.For example, if you provide a handler for the pageLoading event, the custom data is passed in the PageLoadingEventArgs class, which exposes a property.

Дополнительно

Применяется к