ScriptManager.RegisterDataItem Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отправляет пользовательские данные элементам управления во время отрисовки частичной страницы.
Перегрузки
| Имя | Описание |
|---|---|
| RegisterDataItem(Control, String) |
Отправляет пользовательские данные в элемент управления во время отрисовки частичной страницы. |
| RegisterDataItem(Control, String, Boolean) |
Отправляет пользовательские данные в элемент управления во время отрисовки частичной страницы и указывает, находится ли данные в формате нотации объектов JavaScript (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 помощью метода, могут быть доступны в клиентском скрипте во время pageLoadedpageLoadingи endRequest события PageRequestManager объекта. При обработке этих событий пользовательские данные передаются в объект аргумента события. Например, если вы предоставляете обработчик события pageLoading , пользовательские данные передаются в PageLoadingEventArgs классе, который предоставляет dataItems свойство.
См. также раздел
Применяется к
RegisterDataItem(Control, String, Boolean)
Отправляет пользовательские данные в элемент управления во время отрисовки частичной страницы и указывает, находится ли данные в формате нотации объектов JavaScript (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 элемента управления.
Если зарегистрированный dataItemcontrol параметр не сериализуется в формате JSON, задайте для isJsonSerialized параметра значение false. Это позволяет избежать необходимости использовать eval функцию для каждой строки, отправляемой клиенту. Дополнительные сведения о формате JSON см. на веб-сайте JSON.
Метод RegisterDataItem можно вызывать только во время асинхронной обратной передачи. Чтобы определить, является ли обратная обратная связь асинхронной, используйте IsInAsyncPostBack свойство.
Элементы данных, зарегистрированные с помощью RegisterDataItem метода, могут быть доступны в клиентском скрипте во время pageLoadingpageLoadedи endRequest события PageRequestManager объекта. При обработке этих событий пользовательские данные передаются в объект аргумента события. Например, если вы предоставляете обработчик события pageLoading , пользовательские данные передаются в PageLoadingEventArgs классе, который предоставляет dataItems свойство.