ScriptManager.RegisterDataItem Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odesílá vlastní data ovládacím prvkům během částečného vykreslování stránky.
Přetížení
| Name | Description |
|---|---|
| RegisterDataItem(Control, String) |
Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky. |
| RegisterDataItem(Control, String, Boolean) |
Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky a označuje, jestli jsou data ve formátu JSON (JavaScript Object Notation). |
RegisterDataItem(Control, String)
Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky.
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)
Parametry
- control
- Control
Ovládací prvek, který přijímá data.
- dataItem
- String
Data odesílaná do ovládacího prvku.
Výjimky
control je null.
Metoda RegisterDataItem(Control, String, Boolean) se volá během postbacku.
dataItem je již registrován pro control.
Příklady
Následující příklad ukazuje, jak odeslat data do dvou Label ovládacích prvků na stránce během asynchronního postbacku. Ovládací Label prvky nejsou uvnitř UpdatePanel ovládacího prvku.
Poznámka:
Data odeslaná v tomto příkladu jsou určená pouze pro ilustraci. V reálné aplikaci byste použili metodu RegisterDataItem k odesílání vlastních dat ze serveru.
<%@ 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>
Poznámky
RegisterDataItem Metoda slouží k odesílání dat ze serveru klientovi během asynchronních postbacků bez ohledu na to, zda ovládací prvek přijímající data je uvnitř UpdatePanel ovládacího prvku.
Metodu RegisterDataItem lze volat pouze během asynchronního postbacku. Chcete-li zjistit, zda postback je asynchronní, použijte IsInAsyncPostBack vlastnost. Tato metoda vyvolá přetížení, který přebírá parametr s názvem isJsonSerialized , který je nastaven na false.
isJsonSerialized Pokud je parametr nastaven na false, řetězec není serializován jako JavaScript Object Notation (JSON). Další informace o formátu JSON najdete na webu Představujeme JSON .
K datovým položkám registrovaným metodou RegisterDataItem lze přistupovat v klientském skriptu během pageLoading, pageLoadeda endRequest události objektu PageRequestManager . Při zpracování těchto událostí se vlastní data předávají v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading události, předají se vlastní data ve PageLoadingEventArgs třídě, která zveřejňuje dataItems vlastnost.
Viz také
Platí pro
RegisterDataItem(Control, String, Boolean)
Odesílá vlastní data do ovládacího prvku během částečného vykreslování stránky a označuje, jestli jsou data ve formátu 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)
Parametry
- control
- Control
Ovládací prvek stránky, který přijímá data.
- dataItem
- String
Data odesílaná do ovládacího prvku.
- isJsonSerialized
- Boolean
true k označení, že dataItem je serializován jako JSON, jinak , false.
Výjimky
control je null.
Metoda RegisterDataItem(Control, String, Boolean) se volá během postbacku.
dataItem je již registrován pro control.
Příklady
Následující příklad ukazuje, jak odeslat data do dvou Label ovládacích prvků na stránce během asynchronního postbacku. Ovládací Label prvky nejsou uvnitř UpdatePanel ovládacího prvku. Tento příklad ukazuje přetížení, které nepřebírají isJsonSerialized parametr. Jinak je postup pro načtení dataItems vlastnosti objektu PageLoadingEventArgs stejný jako v případě, že jste toto přetížení nepoužili.
Poznámka:
Data odeslaná v tomto příkladu jsou určená pouze pro ilustraci. V reálné aplikaci byste použili metodu RegisterDataItem k odesílání vlastních dat ze serveru. Datovou položku můžete například použít k odeslání informací o tom, zda se mají skrýt nebo zobrazit prvky klienta, které nejsou uvnitř UpdatePanel ovládacího prvku.
<%@ 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>
Poznámky
Metodu RegisterDataItem použijete k odesílání dat ze serveru klientovi během asynchronních postbacků bez ohledu na to, zda ovládací prvek přijímající data je uvnitř UpdatePanel ovládacího prvku.
dataItem Pokud parametr, který control zaregistrujete, není serializován jako JSON, nastavte isJsonSerialized parametr na false. Tím se vyhnete nutnosti používat eval funkci pro každý řetězec odesílaný klientovi. Další informace o formátu JSON najdete na webu Představujeme JSON .
Metodu RegisterDataItem lze volat pouze během asynchronního postbacku. Chcete-li zjistit, zda postback je asynchronní, použijte IsInAsyncPostBack vlastnost.
Datové položky, které jsou registrovány pomocí RegisterDataItem metody lze přistupovat v klientském skriptu během pageLoading, pageLoadeda endRequest události objektu PageRequestManager . Při zpracování těchto událostí se vlastní data předávají v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading události, předají se vlastní data ve PageLoadingEventArgs třídě, která zveřejňuje dataItems vlastnost.