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 při vykreslování částečné stránky.
Přetížení
RegisterDataItem(Control, String) |
Odesílá vlastní data do ovládacího prvku během vykreslování částečné stránky. |
RegisterDataItem(Control, String, Boolean) |
Odesílá vlastní data do ovládacího prvku během vykreslování částečných stránek 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 vykreslování částeč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á ovládacímu prvku.
Výjimky
control
je null
.
Metoda RegisterDataItem(Control, String, Boolean) je volána během postbacku.
dataItem
je již zaregistrovaný 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 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 Pomocí metody můžete odesílat data ze serveru klientovi během asynchronních zpětných operací bez ohledu na to, zda je ovládací prvek přijímající data uvnitř UpdatePanel ovládacího prvku.
Metodu RegisterDataItem lze volat pouze během asynchronního postbacku. Chcete-li zjistit, zda je postback 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 zaregistrovaným pomocí RegisterDataItem metody lze přistupovat v klientském skriptu během pageLoading
událostí objektu PageRequestManager
, pageLoaded
a endRequest
. Při zpracování těchto událostí jsou vlastní data předána v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading
události, vlastní data se předají 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 vykreslování částečných stránek 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á ovládacímu prvku.
- isJsonSerialized
- Boolean
true
označující, že dataItem
je serializovaný jako JSON, jinak . false
Výjimky
control
je null
.
Metoda RegisterDataItem(Control, String, Boolean) je volána během postbacku.
dataItem
je již zaregistrovaný 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. V opačném případě je postup pro načtení dataItems
vlastnosti objektu PageLoadingEventArgs
stejný, jako kdybyste toto přetížení nepoužili.
Poznámka
Data odeslaná v tomto příkladu jsou 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
Použijete metodu RegisterDataItem k odesílání dat ze serveru do klienta během asynchronních zpětných operací bez ohledu na to, zda je ovládací prvek přijímající data uvnitř UpdatePanel ovládacího prvku.
dataItem
Pokud parametr, který control
zaregistrujete, není serializovaný 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 je postback asynchronní, použijte IsInAsyncPostBack vlastnost .
K datovým položkám, které jsou registrovány pomocí RegisterDataItem metody, lze přistupovat v klientském skriptu během pageLoading
událostí objektu PageRequestManager
, pageLoaded
a endRequest
. Při zpracování těchto událostí jsou vlastní data předána v objektu argumentu události. Pokud například zadáte obslužnou rutinu pageLoading
události, vlastní data se předají ve PageLoadingEventArgs
třídě, která zveřejňuje dataItems
vlastnost.
Viz také
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro