ScriptManager.RegisterDataItem Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Envia dados personalizados para os controlos durante a renderização parcial da página.
Sobrecargas
| Name | Description |
|---|---|
| RegisterDataItem(Control, String) |
Envia dados personalizados para um controlo durante a renderização parcial da página. |
| RegisterDataItem(Control, String, Boolean) |
Envia dados personalizados para um controlo durante a renderização parcial da página e indica se os dados estão em formato JavaScript Object Notation (JSON). |
RegisterDataItem(Control, String)
Envia dados personalizados para um controlo durante a renderização parcial da página.
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)
Parâmetros
- control
- Control
O controlo que recebe os dados.
- dataItem
- String
Os dados que são enviados para o controlo.
Exceções
control é null.
O RegisterDataItem(Control, String, Boolean) método é chamado durante um postback.
dataItem já está registado para control.
Exemplos
O exemplo seguinte mostra como enviar dados para dois Label controlos numa página durante um postback assíncrono. Os Label controlos não estão dentro de um controlo UpdatePanel .
Note
Os dados enviados neste exemplo são apenas para ilustração. Numa aplicação do mundo real, usarias o RegisterDataItem método para enviar dados personalizados a partir do servidor.
<%@ 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>
Observações
Use o RegisterDataItem método para enviar dados do servidor para o cliente durante postbacks assíncronos, independentemente de o controlo que recebe os dados estar dentro de um UpdatePanel controlo.
O RegisterDataItem método só pode ser chamado durante um postback assíncrono. Para determinar se um postback é assíncrono, use a IsInAsyncPostBack propriedade. Este método invoca a sobrecarga que recebe um parâmetro chamado isJsonSerialized que é definido como false. Quando o isJsonSerialized parâmetro é definido para false, a cadeia não é serializada como JavaScript Object Notation (JSON). Para mais informações sobre o formato JSON, consulte o site Introducing JSON .
Os itens de dados registados com o RegisterDataItem método podem ser acedidos no script cliente durante os pageLoading, pageLoaded, e endRequest eventos do PageRequestManager objeto. Quando se lidam com estes eventos, os dados personalizados são passados num objeto argumento de evento. Por exemplo, se fornecer um handler para o pageLoading evento, os dados personalizados são passados na PageLoadingEventArgs classe, que expõe uma dataItems propriedade.
Ver também
Aplica-se a
RegisterDataItem(Control, String, Boolean)
Envia dados personalizados para um controlo durante a renderização parcial da página e indica se os dados estão em formato JavaScript Object Notation (JSON).
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)
Parâmetros
- control
- Control
O controlo de página que recebe os dados.
- dataItem
- String
Os dados que são enviados para o controlo.
- isJsonSerialized
- Boolean
true para indicar que dataItem é serializado como JSON; caso contrário, false.
Exceções
control é null.
O RegisterDataItem(Control, String, Boolean) método é chamado durante um postback.
dataItem já está registado para control.
Exemplos
O exemplo seguinte mostra como enviar dados para dois Label controlos numa página durante um postback assíncrono. Os Label controlos não estão dentro de um controlo UpdatePanel . Este exemplo mostra a sobrecarga que não toma o isJsonSerialized parâmetro. Caso contrário, o procedimento para recuperar a dataItems propriedade do PageLoadingEventArgs objeto é o mesmo que se não usasse essa sobrecarga.
Note
Os dados enviados neste exemplo são apenas para ilustração. Numa aplicação do mundo real, usarias o RegisterDataItem método para enviar dados personalizados a partir do servidor. Por exemplo, pode usar o elemento de dados para enviar informação sobre se deve ocultar ou mostrar elementos do cliente que não estão dentro de um UpdatePanel controlo.
<%@ 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>
Observações
Utiliza-se o RegisterDataItem método para enviar dados do servidor para o cliente durante postbacks assíncronos, independentemente de o controlo que recebe os dados estar dentro de um UpdatePanel controlo.
Se o dataItem parâmetro para o qual regista control não estiver serializado como JSON, defina o isJsonSerialized parâmetro para false. Isto evita a necessidade de usar a eval função para cada string enviada ao cliente. Para mais informações sobre o formato JSON, consulte o site Introducing JSON .
O RegisterDataItem método só pode ser chamado durante um postback assíncrono. Para determinar se um postback é assíncrono, use a IsInAsyncPostBack propriedade.
Os itens de dados registados através do RegisterDataItem método podem ser acedidos no script cliente durante os pageLoading, pageLoaded, e endRequest eventos do PageRequestManager objeto. Quando se lidam com estes eventos, os dados personalizados são passados num objeto argumento de evento. Por exemplo, se fornecer um handler para o pageLoading evento, os dados personalizados são passados na PageLoadingEventArgs classe, que expõe uma dataItems propriedade.