DetailsViewUpdatedEventHandler Delegar
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.
Representa o método que gere o ItemUpdated evento de um DetailsView controlo. Esta classe não pode ser herdada.
public delegate void DetailsViewUpdatedEventHandler(System::Object ^ sender, DetailsViewUpdatedEventArgs ^ e);
public delegate void DetailsViewUpdatedEventHandler(object sender, DetailsViewUpdatedEventArgs e);
type DetailsViewUpdatedEventHandler = delegate of obj * DetailsViewUpdatedEventArgs -> unit
Public Delegate Sub DetailsViewUpdatedEventHandler(sender As Object, e As DetailsViewUpdatedEventArgs)
Parâmetros
- sender
- Object
A origem do evento.
A DetailsViewUpdatedEventArgs que contém os dados do evento.
Exemplos
O exemplo de código seguinte demonstra como adicionar programaticamente um DetailsViewUpdatedEventHandler delegado ao ItemUpdated evento de um DetailsView 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">
void Page_Load(Object sender, EventArgs e)
{
// Create a new DetailsView object.
DetailsView customerDetailsView = new DetailsView();
// Set the DetailsView object's properties.
customerDetailsView.ID = "CustomerDetailsView";
customerDetailsView.DataSourceID = "DetailsViewSource";
customerDetailsView.AutoGenerateRows = true;
customerDetailsView.AutoGenerateEditButton = true;
customerDetailsView.AllowPaging = true;
customerDetailsView.DataKeyNames = new String[1] { "CustomerID" };
customerDetailsView.PagerSettings.Position = PagerPosition.Bottom;
// Programmatically register the event-handling methods
// for the DetailsView control.
customerDetailsView.ItemUpdated += new DetailsViewUpdatedEventHandler(this.CustomerDetailsView_ItemUpdated);
// Add the DetailsView object to the Controls collection
// of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView);
}
void CustomerDetailsView_ItemUpdated(Object sender,
DetailsViewUpdatedEventArgs e)
{
// Use the Exception property to determine whether an exception
// occurred during the insert operation.
if (e.Exception == null)
{
// Use the Values property to get the value entered by
// the user for the CompanyName field.
String keyFieldValue = e.Keys["CustomerID"].ToString();
// Display a confirmation message.
MessageLabel.Text = "Record " + keyFieldValue +
" updated successfully. ";
// Display the old and new values.
DisplayValues(e);
if (e.AffectedRows == 1)
{
MessageLabel.Text += e.AffectedRows.ToString() +
" record updated.";
}
else
{
MessageLabel.Text += e.AffectedRows.ToString() +
" records updated.";
}
}
else
{
// Insert the code to handle the exception.
MessageLabel.Text = e.Exception.Message;
// Use the ExceptionHandled property to indicate that the
// exception is already handled.
e.ExceptionHandled = true;
// When an exception occurs, keep the DetailsView
// control in edit mode.
e.KeepInEditMode = true;
}
}
void DisplayValues(DetailsViewUpdatedEventArgs e)
{
MessageLabel.Text += "<br/></br>";
// Iterate through the OldValue and NewValues
// properties and display the values.
for (int i = 0; i < e.OldValues.Count; i++)
{
MessageLabel.Text += "Old Value=" + e.OldValues[i].ToString() +
", New Value=" + e.NewValues[i].ToString() + "<br/>";
}
MessageLabel.Text += "</br>";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewUpdatedEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewUpdatedEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:PlaceHolder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
<asp:label id="MessageLabel"
forecolor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the web.config file. -->
<asp:sqldatasource id="DetailsViewSource"
selectcommand="Select [CustomerID], [CompanyName], [Address],
[City], [PostalCode], [Country] From [Customers]"
updatecommand="Update [Customers] Set
[CompanyName]=@CompanyName, [Address]=@Address,
[City]=@City, [PostalCode]=@PostalCode,
[Country]=@Country
Where [CustomerID]=@CustomerID"
connectionstring=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</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">
Sub Page_Load(sender As Object, e as EventArgs)
' Create a new DetailsView object.
Dim customerDetailsView As New DetailsView()
' Set the DetailsView object's properties.
customerDetailsView.ID = "CustomerDetailsView"
customerDetailsView.DataSourceID = "DetailsViewSource"
customerDetailsView.AutoGenerateRows = True
customerDetailsView.AutoGenerateEditButton = True
customerDetailsView.AllowPaging = True
customerDetailsView.PagerSettings.Position = PagerPosition.Bottom
Dim keyArray() As String = {"CustomerID"}
customerDetailsView.DataKeyNames = keyArray
' Programmatically register the event-handling methods
' for the DetailsView control.
AddHandler customerDetailsView.ItemUpdated, _
AddressOf CustomerDetailsView_ItemUpdated
' Add the DetailsView object to the Controls collection
' of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView)
End Sub
Sub CustomerDetailsView_ItemUpdated(ByVal sender As Object, _
ByVal e As DetailsViewUpdatedEventArgs)
' Use the Exception property to determine whether an exception
' occurred during the insert operation.
If e.Exception Is Nothing Then
' Use the Values property to get the value entered by
' the user for the CompanyName field.
Dim keyFieldValue As String = e.Keys("CustomerID").ToString()
' Display a confirmation message.
MessageLabel.Text = "Record " & keyFieldValue & _
" updated successfully. "
' Display the old and new values.
DisplayValues(e)
If e.AffectedRows = 1 Then
MessageLabel.Text &= e.AffectedRows.ToString() & _
" record updated."
Else
MessageLabel.Text &= e.AffectedRows.ToString() & _
" records updated."
End If
Else
' Insert the code to handle the exception.
MessageLabel.Text = e.Exception.Message
' Use the ExceptionHandled property to indicate that the
' exception is already handled.
e.ExceptionHandled = True
' When an exception occurs, keep the DetailsView
' control in edit mode.
e.KeepInEditMode = True
End If
End Sub
Sub DisplayValues(ByVal e As DetailsViewUpdatedEventArgs)
MessageLabel.Text &= "<br/></br>"
' Iterate through the OldValue and NewValues
' properties and display the values.
Dim i As Integer
For i = 0 To e.OldValues.Count - 1
MessageLabel.Text &= "Old Value=" & e.OldValues(i).ToString() & _
", New Value=" & e.NewValues(i).ToString() & "<br/>"
Next
MessageLabel.Text &= "</br>"
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewUpdatedEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewUpdatedEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:PlaceHolder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
<asp:label id="MessageLabel"
forecolor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the web.config file. -->
<asp:sqldatasource id="DetailsViewSource"
selectcommand="Select [CustomerID], [CompanyName], [Address],
[City], [PostalCode], [Country] From [Customers]"
updatecommand="Update [Customers] Set
[CompanyName]=@CompanyName, [Address]=@Address,
[City]=@City, [PostalCode]=@PostalCode,
[Country]=@Country
Where [CustomerID]=@CustomerID"
connectionstring=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
O exemplo de código seguinte demonstra como adicionar declarativamente um DetailsViewUpdatedEventHandler delegado ao ItemUpdated evento de um DetailsView 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">
void CustomerDetailsView_ItemUpdated(Object sender,
DetailsViewUpdatedEventArgs e)
{
// Use the Exception property to determine whether an exception
// occurred during the insert operation.
if (e.Exception == null)
{
// Use the Values property to get the value entered by
// the user for the CompanyName field.
String keyFieldValue = e.Keys["CustomerID"].ToString();
// Display a confirmation message.
MessageLabel.Text = "Record " + keyFieldValue +
" updated successfully. ";
// Display the old and new values.
DisplayValues(e);
if (e.AffectedRows == 1)
{
MessageLabel.Text += e.AffectedRows.ToString() +
" record updated.";
}
else
{
MessageLabel.Text += e.AffectedRows.ToString() +
" records updated.";
}
}
else
{
// Insert the code to handle the exception.
MessageLabel.Text = e.Exception.Message;
// Use the ExceptionHandled property to indicate that the
// exception is already handled.
e.ExceptionHandled = true;
// When an exception occurs, keep the DetailsView
// control in edit mode.
e.KeepInEditMode = true;
}
}
void DisplayValues(DetailsViewUpdatedEventArgs e)
{
MessageLabel.Text += "<br/></br>";
// Iterate through the OldValue and NewValues
// properties and display the values.
for (int i = 0; i < e.OldValues.Count; i++)
{
MessageLabel.Text += "Old Value=" + e.OldValues[i].ToString() +
", New Value=" + e.NewValues[i].ToString() + "<br/>";
}
MessageLabel.Text += "</br>";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewUpdatedEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewUpdatedEventHandler Example</h3>
<asp:detailsview id="CustomerDetailsView"
datasourceid="DetailsViewSource"
autogeneraterows="true"
autogenerateeditbutton="true"
allowpaging="true"
datakeynames="CustomerID"
onitemupdated="CustomerDetailsView_ItemUpdated"
runat="server">
<pagersettings position="Bottom"/>
</asp:detailsview>
<br/>
<asp:label id="MessageLabel"
forecolor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the web.config file. -->
<asp:sqldatasource id="DetailsViewSource"
selectcommand="Select [CustomerID], [CompanyName], [Address],
[City], [PostalCode], [Country] From [Customers]"
updatecommand="Update [Customers] Set
[CompanyName]=@CompanyName, [Address]=@Address,
[City]=@City, [PostalCode]=@PostalCode,
[Country]=@Country
Where [CustomerID]=@CustomerID"
connectionstring=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
<%@ Page language="VB" autoeventwireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub CustomerDetailsView_ItemUpdated(ByVal sender As Object, ByVal e As DetailsViewUpdatedEventArgs) Handles CustomerDetailsView.ItemUpdated
' Use the Exception property to determine whether an exception
' occurred during the insert operation.
If e.Exception Is Nothing Then
' Use the Values property to get the value entered by
' the user for the CompanyName field.
Dim keyFieldValue As String = e.Keys("CustomerID").ToString()
' Display a confirmation message.
MessageLabel.Text = "Record " & keyFieldValue & _
" updated successfully. "
' Display the old and new values.
DisplayValues(e)
If e.AffectedRows = 1 Then
MessageLabel.Text &= e.AffectedRows.ToString() & _
" record updated."
Else
MessageLabel.Text &= e.AffectedRows.ToString() & _
" records updated."
End If
Else
' Insert the code to handle the exception.
MessageLabel.Text = e.Exception.Message
' Use the ExceptionHandled property to indicate that the
' exception is already handled.
e.ExceptionHandled = True
' When an exception occurs, keep the DetailsView
' control in edit mode.
e.KeepInEditMode = True
End If
End Sub
Sub DisplayValues(ByVal e As DetailsViewUpdatedEventArgs)
MessageLabel.Text &= "<br/></br>"
' Iterate through the OldValue and NewValues
' properties and display the values.
Dim i As Integer
For i = 0 To e.OldValues.Count - 1
MessageLabel.Text &= "Old Value=" & e.OldValues(i).ToString() & _
", New Value=" & e.NewValues(i).ToString() & "<br/>"
Next
MessageLabel.Text &= "</br>"
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewUpdatedEvent Handler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewUpdatedEvent Handler Example</h3>
<asp:detailsview id="CustomerDetailsView"
datasourceid="DetailsViewSource"
autogeneraterows="true"
autogenerateeditbutton="true"
allowpaging="true"
datakeynames="CustomerID"
runat="server">
<pagersettings position="Bottom"/>
</asp:detailsview>
<br/>
<asp:label id="MessageLabel"
forecolor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the web.config file. -->
<asp:sqldatasource id="DetailsViewSource"
selectcommand="Select [CustomerID], [CompanyName], [Address],
[City], [PostalCode], [Country] From [Customers]"
updatecommand="Update [Customers] Set
[CompanyName]=@CompanyName, [Address]=@Address,
[City]=@City, [PostalCode]=@PostalCode,
[Country]=@Country
Where [CustomerID]=@CustomerID"
connectionstring=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
Observações
O DetailsView controlo levanta o ItemUpdated evento quando um botão de Atualização (um botão com CommandName a propriedade definida para "Atualizar") dentro do controlo é clicado, mas depois de o DetailsView controlo atualizar o registo. Isto permite-lhe fornecer um gestor de eventos que executa uma rotina personalizada, como verificar os resultados de uma operação de atualização, sempre que este evento ocorre.
Quando cria um DetailsViewUpdatedEventHandler delegado, identifica o método que irá gerir o evento. Para associar o evento ao seu gestor de eventos, adicione uma instância do delegado ao evento. O gestor de eventos é chamado sempre que o evento ocorre, a menos que remova o delegado. Para mais informações sobre os delegados handlers de eventos, consulte Gestão e Angariação de Eventos.
Métodos da Extensão
| Name | Description |
|---|---|
| GetMethodInfo(Delegate) |
Obtém um objeto que representa o método representado pelo delegado especificado. |