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 während des Teilrenderings von Seiten benutzerdefinierte Daten an Steuerelemente.
Überlädt
RegisterDataItem(Control, String) |
Sendet während des Teilrenderings von Seiten benutzerdefinierte Daten an ein Steuerelement. |
RegisterDataItem(Control, String, Boolean) |
Sendet benutzerdefinierte Daten während des Teilrenderings von Seiten an ein Steuerelement und gibt an, ob die Daten das JSON-Format (JavaScript Object Notation) aufweisen. |
RegisterDataItem(Control, String)
Sendet während des Teilrenderings von Seiten benutzerdefinierte Daten 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 für control
registriert.
Beispiele
Das folgende Beispiel zeigt, wie Während eines asynchronen Postbacks Daten an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht in einem UpdatePanel Steuerelement.
Hinweis
Die in diesem Beispiel gesendeten Daten dienen nur der 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 zum Senden von Daten vom Server an den Client während asynchroner Postbacks, unabhängig davon, ob sich das Steuerelement, das die Daten empfängt, in einem UpdatePanel Steuerelement befindet.
Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Verwenden Sie die IsInAsyncPostBack -Eigenschaft, um zu bestimmen, ob ein Postback asynchron ist. Diese Methode ruft die Überladung auf, die einen Parameter mit dem Namen akzeptiert isJsonSerialized
, der auf false
festgelegt ist. 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 Website Einführung in JSON .
Auf die Datenelemente, die bei der RegisterDataItem -Methode registriert sind, kann im Clientskript während des pageLoading
- pageLoaded
und endRequest
-Ereignisses des PageRequestManager
-Objekts zugegriffen 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, wodurch eine dataItems
Eigenschaft verfügbar gemacht wird.
Weitere Informationen
Gilt für:
RegisterDataItem(Control, String, Boolean)
Sendet benutzerdefinierte Daten während des Teilrenderings von Seiten an ein Steuerelement und gibt an, ob die Daten das JSON-Format (JavaScript Object Notation) aufweisen.
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 dataItem
als JSON serialisiert wird, andernfalls false
.
Ausnahmen
control
ist null
.
Die RegisterDataItem(Control, String, Boolean)-Methode wird während eines Postbacks aufgerufen.
dataItem
ist bereits für control
registriert.
Beispiele
Das folgende Beispiel zeigt, wie Während eines asynchronen Postbacks Daten an zwei Label Steuerelemente auf einer Seite gesendet werden. Die Label Steuerelemente befinden sich nicht in einem UpdatePanel Steuerelement. Dieses Beispiel zeigt die Überladung, die den isJsonSerialized
Parameter nicht akzeptiert. Andernfalls ist die Prozedur zum Abrufen der dataItems
-Eigenschaft des PageLoadingEventArgs
-Objekts identisch, als hätten Sie diese Überladung nicht verwendet.
Hinweis
Die in diesem Beispiel gesendeten Daten dienen nur der Veranschaulichung. In einer realen Anwendung würden Sie die RegisterDataItem -Methode verwenden, um benutzerdefinierte Daten vom Server zu senden. Beispielsweise können Sie das Datenelement verwenden, um Informationen darüber zu senden, ob Clientelemente ausgeblendet oder angezeigt werden sollen, die sich nicht in einem UpdatePanel Steuerelement 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 zum Senden von Daten vom Server an den Client während asynchroner Postbacks, unabhängig davon, ob sich das Steuerelement, das die Daten empfängt, 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 festfalse
.control
Dadurch wird vermieden, dass die eval
Funktion für jede Zeichenfolge verwendet werden muss, die an den Client gesendet wird. Weitere Informationen zum JSON-Format finden Sie auf der Website Einführung in JSON .
Die RegisterDataItem Methode kann nur während eines asynchronen Postbacks aufgerufen werden. Verwenden Sie die IsInAsyncPostBack -Eigenschaft, um zu bestimmen, ob ein Postback asynchron ist.
Auf die Datenelemente, die mithilfe der RegisterDataItem -Methode registriert werden, kann im Clientskript während der pageLoading
Ereignisse , pageLoaded
und endRequest
des PageRequestManager
-Objekts zugegriffen 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, wodurch eine dataItems
Eigenschaft verfügbar gemacht wird.