DetailsView.ItemDeleted Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Aparece cuando se hace clic en un botón Suprimir de un control DetailsView, pero después de la operación de eliminación.
public:
event System::Web::UI::WebControls::DetailsViewDeletedEventHandler ^ ItemDeleted;
public event System.Web.UI.WebControls.DetailsViewDeletedEventHandler ItemDeleted;
member this.ItemDeleted : System.Web.UI.WebControls.DetailsViewDeletedEventHandler
Public Custom Event ItemDeleted As DetailsViewDeletedEventHandler
Tipo de evento
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar el ItemDeleted evento para actualizar un GridView control después de que un DetailsView control realice una operación de eliminación. Esto mantiene el GridView control sincronizado con el DetailsView control .
<%@ 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 CustomerDetail_ItemInserted(object sender,
DetailsViewInsertedEventArgs e)
{
// Refresh the GridView control after a new record is inserted
// in the DetailsView control.
CustomersView.DataBind();
}
void CustomerDetail_ItemInserting(object sender,
DetailsViewInsertEventArgs e)
{
// Iterate though the values entered by the user and HTML encode
// the values. This helps prevent malicious values from being
// stored in the data source.
for (int i = 0; i < e.Values.Count; i++)
{
if (e.Values[i] != null)
{
e.Values[i] = Server.HtmlEncode(e.Values[i].ToString());
}
}
}
void CustomerDetail_ItemUpdated(object sender,
DetailsViewUpdatedEventArgs e)
{
// Refresh the GridView control after a new record is updated
// in the DetailsView control.
CustomersView.DataBind();
}
void CustomerDetail_ItemUpdating(object sender,
DetailsViewUpdateEventArgs e)
{
// Iterate though the values entered by the user and HTML encode
// the values. This helps prevent malicious values from being
// stored in the data source.
for (int i = 0; i < e.NewValues.Count; i++)
{
if (e.NewValues[i] != null)
{
e.NewValues[i] = Server.HtmlEncode(e.NewValues[i].ToString());
}
}
}
void CustomerDetail_ItemDeleted(object sender,
DetailsViewDeletedEventArgs e)
{
// Refresh the GridView control after a new record is updated
// in the DetailsView control.
CustomersView.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
DetailsView Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>
DetailsView Example</h3>
<table cellspacing="10">
<tr>
<td>
<!-- Use a GridView control in combination with -->
<!-- a DetailsView control to display master-detail -->
<!-- information. When the user selects a store from -->
<!-- GridView control, the customers//s detailed -->
<!-- information is displayed in the DetailsView -->
<!-- control. -->
<asp:GridView ID="CustomersView" DataSourceID="Customers"
AutoGenerateColumns="False"
DataKeyNames="CustomerID" runat="server">
<HeaderStyle BackColor="Blue" ForeColor="White" />
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="ContactName"
HeaderText="ContactName" />
<asp:BoundField DataField="CompanyName"
HeaderText="CompanyName" />
</Columns>
</asp:GridView>
</td>
<td valign="top">
<asp:DetailsView ID="CustomerDetail"
DataSourceID="Details" AutoGenerateRows="false"
AutoGenerateInsertButton="true"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
EmptyDataText="No records."
DataKeyNames="CustomerID" GridLines="Both"
OnItemInserted="CustomerDetail_ItemInserted"
OnItemInserting="CustomerDetail_ItemInserting"
OnItemUpdated="CustomerDetail_ItemUpdated"
OnItemUpdating="CustomerDetail_ItemUpdating"
OnItemDeleted="CustomerDetail_ItemDeleted"
runat="server">
<HeaderStyle BackColor="Navy" ForeColor="White" />
<RowStyle BackColor="White" />
<AlternatingRowStyle BackColor="LightGray" />
<EditRowStyle BackColor="LightCyan" />
<Fields>
<asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName" />
<asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" />
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" />
<asp:BoundField DataField="Address" HeaderText="Address" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="Region" HeaderText="Region" />
<asp:BoundField DataField="PostalCode" HeaderText="PostalCode" />
<asp:BoundField DataField="Country" HeaderText="Country" />
<asp:BoundField DataField="Phone" HeaderText="Phone" />
<asp:BoundField DataField="Fax" HeaderText="Fax" />
</Fields>
</asp:DetailsView>
</td>
</tr>
</table>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<!-- It is strongly recommended that each data-bound -->
<!-- control uses a separate data source control. -->
<asp:SqlDataSource ID="Customers" runat="server"
ConnectionString=
"<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID]
FROM [Customers]">
</asp:SqlDataSource>
<!-- Add a filter to the data source control for the -->
<!-- DetailsView control to display the details of the -->
<!-- store selected in the GridView control. -->
<asp:SqlDataSource ID="Details"
ConnectionString=
"<%$ ConnectionStrings:NorthwindConnectionString %>"
runat="server"
SelectCommand="SELECT * FROM [Customers]
WHERE ([CustomerID] = @CustomerID)"
DeleteCommand="DELETE FROM [Customers]
WHERE [CustomerID] = @CustomerID"
InsertCommand="INSERT INTO [Customers] ([CustomerID],
[CompanyName], [ContactName], [ContactTitle], [Address],
[City], [Region], [PostalCode], [Country], [Phone], [Fax])
VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle,
@Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax)"
UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName,
[ContactName] = @ContactName, [ContactTitle] = @ContactTitle,
[Address] = @Address, [City] = @City, [Region] = @Region,
[PostalCode] = @PostalCode, [Country] = @Country,
[Phone] = @Phone, [Fax] = @Fax
WHERE [CustomerID] = @CustomerID">
<SelectParameters>
<asp:ControlParameter ControlID="CustomersView"
Name="CustomerID" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="CustomerID" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Region" Type="String" />
<asp:Parameter Name="PostalCode" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" />
<asp:Parameter Name="CustomerID" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="CustomerID" Type="String" />
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Region" Type="String" />
<asp:Parameter Name="PostalCode" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</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 CustomerDetail_ItemInserted(ByVal sender As Object, _
ByVal e As DetailsViewInsertedEventArgs)
' Refresh the GridView control after a new record is inserted in
' the DetailsView control.
CustomersView.DataBind()
End Sub
Sub CustomerDetail_ItemInserting(ByVal sender As Object, _
ByVal e As DetailsViewInsertEventArgs)
' Iterate though the values entered by the user and HTML encode
' the values. This helps prevent malicious values from being
' stored in the data source.
For i As Integer = 0 To e.Values.Count - 1
If e.Values(i) IsNot Nothing Then
e.Values(i) = Server.HtmlEncode(e.Values(i).ToString())
End If
Next
End Sub
Sub CustomerDetail_ItemUpdated(ByVal sender As Object, _
ByVal e As DetailsViewUpdatedEventArgs)
' Refresh the GridView control after a new record is updated
' in the DetailsView control.
CustomersView.DataBind()
End Sub
Sub CustomerDetail_ItemUpdating(ByVal sender As Object, _
ByVal e As DetailsViewUpdateEventArgs)
' Iterate though the values entered by the user and HTML encode
' the values. This helps prevent malicious values from being
' stored in the data source.
For i As Integer = 0 To e.NewValues.Count - 1
If e.NewValues(i) IsNot Nothing Then
e.NewValues(i) = Server.HtmlEncode(e.NewValues(i).ToString())
End If
Next
End Sub
Sub CustomerDetail_ItemDeleted(ByVal sender As Object, _
ByVal e As DetailsViewDeletedEventArgs)
' Refresh the GridView control after a new record is updated
' in the DetailsView control.
CustomersView.DataBind()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsView Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>DetailsView Example</h3>
<table cellspacing="10">
<tr>
<td>
<!-- Use a GridView control in combination with -->
<!-- a DetailsView control to display master-detail -->
<!-- information. When the user selects a store from -->
<!-- GridView control, the customers's detailed -->
<!-- information is displayed in the DetailsView -->
<!-- control. -->
<asp:GridView ID="CustomersView" DataSourceID="Customers"
AutoGenerateColumns="False"
DataKeyNames="CustomerID" runat="server">
<HeaderStyle BackColor="Blue" ForeColor="White" />
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="ContactName"
HeaderText="ContactName" />
<asp:BoundField DataField="CompanyName"
HeaderText="CompanyName" />
</Columns>
</asp:GridView>
</td>
<td valign="top">
<asp:DetailsView ID="CustomerDetail" DataSourceID="Details"
AutoGenerateRows="false"
AutoGenerateInsertButton="true"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
EmptyDataText="No records."
DataKeyNames="CustomerID" GridLines="Both"
OnItemInserted="CustomerDetail_ItemInserted"
OnItemInserting="CustomerDetail_ItemInserting"
OnItemUpdated="CustomerDetail_ItemUpdated"
OnItemUpdating="CustomerDetail_ItemUpdating"
OnItemDeleted="CustomerDetail_ItemDeleted"
runat="server">
<HeaderStyle BackColor="Navy" ForeColor="White" />
<RowStyle BackColor="White" />
<AlternatingRowStyle BackColor="LightGray" />
<EditRowStyle BackColor="LightCyan" />
<Fields>
<asp:BoundField DataField="CustomerID" HeaderText="CustomerID"
ReadOnly="True" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName" />
<asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" />
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" />
<asp:BoundField DataField="Address" HeaderText="Address" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="Region" HeaderText="Region" />
<asp:BoundField DataField="PostalCode" HeaderText="PostalCode" />
<asp:BoundField DataField="Country" HeaderText="Country" />
<asp:BoundField DataField="Phone" HeaderText="Phone" />
<asp:BoundField DataField="Fax" HeaderText="Fax" />
</Fields>
</asp:DetailsView>
</td>
</tr>
</table>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<!-- It is strongly recommended that each data-bound -->
<!-- control uses a separate data source control. -->
<asp:SqlDataSource ID="Customers" runat="server"
ConnectionString=
"<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID]
FROM [Customers]">
</asp:SqlDataSource>
<!-- Add a filter to the data source control for the -->
<!-- DetailsView control to display the details of the -->
<!-- store selected in the GridView control. -->
<asp:SqlDataSource ID="Details"
ConnectionString=
"<%$ ConnectionStrings:NorthwindConnectionString %>"
runat="server"
SelectCommand="SELECT * FROM [Customers]
WHERE ([CustomerID] = @CustomerID)"
DeleteCommand="DELETE FROM [Customers]
WHERE [CustomerID] = @CustomerID"
InsertCommand="INSERT INTO [Customers] ([CustomerID],
[CompanyName], [ContactName], [ContactTitle], [Address],
[City], [Region], [PostalCode], [Country], [Phone], [Fax])
VALUES (@CustomerID, @CompanyName, @ContactName,
@ContactTitle, @Address, @City, @Region, @PostalCode,
@Country, @Phone, @Fax)"
UpdateCommand="UPDATE [Customers] SET
[CompanyName] = @CompanyName,
[ContactName] = @ContactName, [ContactTitle] = @ContactTitle,
[Address] = @Address, [City] = @City, [Region] = @Region,
[PostalCode] = @PostalCode, [Country] = @Country,
[Phone] = @Phone, [Fax] = @Fax
WHERE [CustomerID] = @CustomerID">
<SelectParameters>
<asp:ControlParameter ControlID="CustomersView"
Name="CustomerID" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="CustomerID" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Region" Type="String" />
<asp:Parameter Name="PostalCode" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" />
<asp:Parameter Name="CustomerID" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="CustomerID" Type="String" />
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="Region" Type="String" />
<asp:Parameter Name="PostalCode" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
Comentarios
El ItemDeleted evento se genera cuando se hace clic en un botón Eliminar dentro del DetailsView control, pero después de la operación de eliminación. Esto le permite proporcionar un controlador de eventos que realice una rutina personalizada, como comprobar los resultados de la operación de eliminación, siempre que se produzca este evento.
Un DetailsViewDeletedEventArgs objeto se pasa al controlador de eventos, lo que le permite determinar el número de filas afectadas y las excepciones que podrían haberse producido. También puede indicar si la excepción se controló en el controlador de eventos estableciendo la ExceptionHandled propiedad .
Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.