ScriptManager.RegisterDataItem Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egyéni adatokat küld a vezérlőknek a részleges oldalmegjelenítés során.
Túlterhelések
| Name | Description |
|---|---|
| RegisterDataItem(Control, String) |
Egyéni adatokat küld egy vezérlőnek a részleges oldalmegjelenítés során. |
| RegisterDataItem(Control, String, Boolean) |
Egyéni adatokat küld egy vezérlőnek a részleges oldalmegjelenítés során, és jelzi, hogy az adatok JavaScript Object Notation (JSON) formátumban vannak-e. |
RegisterDataItem(Control, String)
Egyéni adatokat küld egy vezérlőnek a részleges oldalmegjelenítés során.
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)
Paraméterek
- control
- Control
Az adatokat fogadó vezérlő.
- dataItem
- String
A vezérlőnek küldött adatok.
Kivételek
control az null.
A RegisterDataItem(Control, String, Boolean) metódus meghívása utólagos visszavételkor történik.
dataItem már regisztrálva van a következőre control: .
Példák
Az alábbi példa bemutatja, hogyan küldhet adatokat egy lap két Label vezérlőjének az aszinkron visszavétel során. A Label vezérlők nincsenek vezérlőkben UpdatePanel .
Note
Az ebben a példában elküldött adatok csak illusztrációk. Egy valós alkalmazásban a RegisterDataItem metódussal egyéni adatokat küldhet a kiszolgálóról.
<%@ 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>
Megjegyzések
Ezzel a RegisterDataItem módszerrel adatokat küldhet a kiszolgálóról az ügyfélnek az aszinkron visszavételek során, függetlenül attól, hogy az adatokat fogadó vezérlő egy UpdatePanel vezérlőn belül van-e.
A RegisterDataItem metódus csak aszinkron visszavételkor hívható meg. Annak megállapításához, hogy a visszavétel aszinkron-e, használja a tulajdonságot IsInAsyncPostBack . Ez a metódus meghívja a túlterhelést, amely egy, a következőre beállított paramétert isJsonSerializedfalseveszi fel. A paraméter beállításakor isJsonSerializeda false sztring nem JavaScript Object Notation (JSON) néven szerializálva van. A JSON formátummal kapcsolatos további információkért tekintse meg a JSON bemutatása webhelyet.
A metódusban RegisterDataItem regisztrált adatelemek az objektum , pageLoadingés pageLoaded az események endRequest során PageRequestManagerügyfélszkriptben érhetők el. Az események kezelésekor az egyéni adatok egy eseményargumentum-objektumban lesznek átadva. Ha például egy kezelőt ad meg az pageLoading eseményhez, az egyéni adatok az osztályban PageLoadingEventArgs lesznek átadva, amely egy tulajdonságot dataItems tesz elérhetővé.
Lásd még
A következőre érvényes:
RegisterDataItem(Control, String, Boolean)
Egyéni adatokat küld egy vezérlőnek a részleges oldalmegjelenítés során, és jelzi, hogy az adatok JavaScript Object Notation (JSON) formátumban vannak-e.
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)
Paraméterek
- control
- Control
Az adatokat fogadó oldalvezérlő.
- dataItem
- String
A vezérlőnek küldött adatok.
- isJsonSerialized
- Boolean
trueazt jelzi, hogy dataItem a szerializált JSON; ellenkező esetben. false
Kivételek
control az null.
A RegisterDataItem(Control, String, Boolean) metódus meghívása utólagos visszavételkor történik.
dataItem már regisztrálva van a következőre control: .
Példák
Az alábbi példa bemutatja, hogyan küldhet adatokat egy lap két Label vezérlőjének az aszinkron visszavétel során. A Label vezérlők nincsenek vezérlőkben UpdatePanel . Ez a példa azt a túlterhelést mutatja be, amely nem veszi át a paramétert isJsonSerialized . Ellenkező esetben az objektum tulajdonságának beolvasása dataItemsPageLoadingEventArgs ugyanaz, mintha nem használta volna ezt a túlterhelést.
Note
Az ebben a példában elküldött adatok csak illusztrációk. Egy valós alkalmazásban a RegisterDataItem metódussal egyéni adatokat küldhet a kiszolgálóról. Az adatelem használatával például információkat küldhet arról, hogy elrejtse vagy megjelenítse-e azokat az ügyfélelemeket, amelyek nem egy UpdatePanel vezérlőn belül találhatók.
<%@ 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>
Megjegyzések
Ezzel a RegisterDataItem módszerrel adatokat küldhet a kiszolgálóról az ügyfélnek az aszinkron visszavételek során, függetlenül attól, hogy az adatokat fogadó vezérlő egy UpdatePanel vezérlőn belül van-e.
Ha a dataItem regisztrálandó control paraméter nem JSON-ként van szerializálva, állítsa a paramétert a isJsonSerialized következőre false: . Így nem szükséges a függvényt használni az eval ügyfélnek küldött összes sztringhez. A JSON formátummal kapcsolatos további információkért tekintse meg a JSON bemutatása webhelyet.
A RegisterDataItem metódus csak aszinkron visszavételkor hívható meg. Annak megállapításához, hogy a visszavétel aszinkron-e, használja a tulajdonságot IsInAsyncPostBack .
A metódussal regisztrált adatelemek az RegisterDataItem objektum során pageLoadingpageLoadedendRequest az ügyfélszkriptben PageRequestManagerérhetők el. Az események kezelésekor az egyéni adatok egy eseményargumentum-objektumban lesznek átadva. Ha például egy kezelőt ad meg az pageLoading eseményhez, az egyéni adatok az osztályban PageLoadingEventArgs lesznek átadva, amely egy tulajdonságot dataItems tesz elérhetővé.