ScriptManager.RegisterDataItem Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet benutzerdefinierte Daten an Steuerelemente während des teilweisen Seitenrenderings.
Überlädt
| Name | Beschreibung |
|---|---|
| RegisterDataItem(Control, String) |
Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement. |
| RegisterDataItem(Control, String, Boolean) |
Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement und gibt an, ob die Daten im Json-Format (JavaScript Object Notation) vorliegen. |
RegisterDataItem(Control, String)
Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement.
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)
Parameter
- control
- Control
Das Steuerelement, das die Daten empfängt.
- dataItem
- String
Die Daten, die an das Steuerelement gesendet werden.
Ausnahmen
control ist null.
Die RegisterDataItem(Control, String, Boolean) Methode wird während eines Postbacks aufgerufen.
dataItem ist bereits registriert für control.
Beispiele
Das folgende Beispiel zeigt, wie Daten während eines asynchronen Postbacks an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht innerhalb eines Steuerelements UpdatePanel .
Hinweis
Die in diesem Beispiel gesendeten Daten dienen nur zur Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem Methode verwenden, um benutzerdefinierte Daten vom Server zu senden.
<%@ 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>
Hinweise
Verwenden Sie die RegisterDataItem Methode, um Daten vom Server während asynchroner Postbacks an den Client zu senden, unabhängig davon, ob sich das Empfangen der Daten in einem UpdatePanel Steuerelement befindet.
Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Um festzustellen, ob ein Postback asynchron ist, verwenden Sie die IsInAsyncPostBack Eigenschaft. Diese Methode ruft die Überladung auf, die einen Parameter mit dem Namen isJsonSerialized verwendet, der auf false. Wenn der isJsonSerialized Parameter auf false festgelegt ist, wird die Zeichenfolge nicht als JavaScript Object Notation (JSON) serialisiert. Weitere Informationen zum JSON-Format finden Sie auf der Einführungs-JSON-Website .
Auf die mit der RegisterDataItem Methode registrierten Datenelemente kann während des pageLoadingEreignisses pageLoadeddes Objekts im Clientskript zugegriffen endRequestPageRequestManager werden. Wenn Sie diese Ereignisse behandeln, werden die benutzerdefinierten Daten in einem Ereignisargumentobjekt übergeben. Wenn Sie beispielsweise einen Handler für das pageLoading Ereignis bereitstellen, werden die benutzerdefinierten Daten in der PageLoadingEventArgs Klasse übergeben, die eine dataItems Eigenschaft verfügbar macht.
Weitere Informationen
Gilt für:
RegisterDataItem(Control, String, Boolean)
Sendet benutzerdefinierte Daten während des teilweisen Seitenrenderings an ein Steuerelement und gibt an, ob die Daten im Json-Format (JavaScript Object Notation) vorliegen.
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)
Parameter
- control
- Control
Das Seitensteuerelement, das die Daten empfängt.
- dataItem
- String
Die Daten, die an das Steuerelement gesendet werden.
- isJsonSerialized
- Boolean
true um anzugeben, dass als dataItem JSON serialisiert wird; andernfalls false.
Ausnahmen
control ist null.
Die RegisterDataItem(Control, String, Boolean) Methode wird während eines Postbacks aufgerufen.
dataItem ist bereits registriert für control.
Beispiele
Das folgende Beispiel zeigt, wie Daten während eines asynchronen Postbacks an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht innerhalb eines Steuerelements UpdatePanel . Dieses Beispiel zeigt die Überladung, die den isJsonSerialized Parameter nicht verwendet. Andernfalls entspricht die Prozedur zum Abrufen der dataItems Eigenschaft des PageLoadingEventArgs Objekts dem, wenn Sie diese Überladung nicht verwendet haben.
Hinweis
Die in diesem Beispiel gesendeten Daten dienen nur zur Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem Methode verwenden, um benutzerdefinierte Daten vom Server zu senden. Sie können z. B. das Datenelement verwenden, um Informationen darüber zu senden, ob Clientelemente ausgeblendet oder angezeigt werden sollen, die sich nicht innerhalb eines UpdatePanel Steuerelements befinden.
<%@ 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>
Hinweise
Sie verwenden die RegisterDataItem Methode, um Daten vom Server während asynchroner Postbacks an den Client zu senden, unabhängig davon, ob sich das Empfangen der Daten in einem UpdatePanel Steuerelement befindet.
Wenn der Parameter, für den dataItem Sie sich registrieren, nicht als JSON serialisiert wird, legen Sie den isJsonSerialized Parameter auf false.control Dies vermeidet die Notwendigkeit, die eval Funktion für jede Zeichenfolge zu verwenden, die an den Client gesendet wird. Weitere Informationen zum JSON-Format finden Sie auf der Einführungs-JSON-Website .
Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Um festzustellen, ob ein Postback asynchron ist, verwenden Sie die IsInAsyncPostBack Eigenschaft.
Auf die Mithilfe der RegisterDataItem Methode registrierten Datenelemente kann während des pageLoadingEreignisses pageLoadeddes Objekts im Clientskript zugegriffen endRequestPageRequestManager werden. Wenn Sie diese Ereignisse behandeln, werden die benutzerdefinierten Daten in einem Ereignisargumentobjekt übergeben. Wenn Sie beispielsweise einen Handler für das pageLoading Ereignis bereitstellen, werden die benutzerdefinierten Daten in der PageLoadingEventArgs Klasse übergeben, die eine dataItems Eigenschaft verfügbar macht.