Поделиться через


ScriptManager.RegisterDataItem Метод

Определение

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы.

Перегрузки

RegisterDataItem(Control, String)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы.

RegisterDataItem(Control, String, Boolean)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы и указывает, имеют ли данные формат JavaScript Object Notation (JSON).

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.

Примеры

В следующем примере показано, как отправлять данные в два 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 (JSON). Дополнительные сведения о формате JSON см. на веб-сайте Введение в JSON .

Доступ к элементам данных, зарегистрированным с помощью RegisterDataItem метода , можно получить в клиентском скрипте pageLoadingво время событий PageRequestManager , pageLoadedи endRequest объекта . При обработке этих событий пользовательские данные передаются в объект аргумента события. Например, если предоставить обработчик для pageLoading события, пользовательские данные передаются в PageLoadingEventArgs класс , который предоставляет dataItems свойство .

См. также раздел

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

RegisterDataItem(Control, String, Boolean)

Посылает пользовательские данные элементу управления во время частичной отрисовки страницы и указывает, имеют ли данные формат JavaScript Object Notation (JSON).

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

true для указания, что элемент данных dataItem сериализован как JSON; в противном случае — false.

Исключения

control имеет значение null.

Метод RegisterDataItem(Control, String, Boolean) вызывается во время обратной передачи.

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

Примеры

В следующем примере показано, как отправлять данные в два Label элемента управления на странице во время асинхронной обратной передачи. Элементы Label управления не находятся внутри UpdatePanel элемента управления. В этом примере показана перегрузка, которая не принимает isJsonSerialized параметр . В противном случае процедура получения dataItems свойства PageLoadingEventArgs объекта такая же, как если бы вы не использовали эту перегрузку.

Примечание

Данные, отправляемые в этом примере, приведены только для иллюстрации. В реальном приложении для отправки пользовательских 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 параметр control не сериализован в формате JSON, задайте для параметра значение isJsonSerializedfalse. Это позволяет избежать необходимости использовать функцию для каждой eval строки, отправляемой клиенту. Дополнительные сведения о формате JSON см. на веб-сайте Введение в JSON .

Метод RegisterDataItem можно вызывать только во время асинхронной обратной передачи. Чтобы определить, является ли обратная связь асинхронной, используйте IsInAsyncPostBack свойство .

Элементы данных, зарегистрированные с помощью RegisterDataItem метода , можно получить в клиентском скрипте pageLoadingво время событий PageRequestManager , pageLoadedи endRequest объекта . При обработке этих событий пользовательские данные передаются в объект аргумента события. Например, если предоставить обработчик для pageLoading события, пользовательские данные передаются в PageLoadingEventArgs класс , который предоставляет dataItems свойство .

См. также раздел

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