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, задайте для параметра значение isJsonSerialized
false
. Это позволяет избежать необходимости использовать функцию для каждой eval
строки, отправляемой клиенту. Дополнительные сведения о формате JSON см. на веб-сайте Введение в JSON .
Метод RegisterDataItem можно вызывать только во время асинхронной обратной передачи. Чтобы определить, является ли обратная связь асинхронной, используйте IsInAsyncPostBack свойство .
Элементы данных, зарегистрированные с помощью RegisterDataItem метода , можно получить в клиентском скрипте pageLoading
во время событий PageRequestManager
, pageLoaded
и endRequest
объекта . При обработке этих событий пользовательские данные передаются в объект аргумента события. Например, если предоставить обработчик для pageLoading
события, пользовательские данные передаются в PageLoadingEventArgs
класс , который предоставляет dataItems
свойство .