DetailsViewPageEventHandler Delegado
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í.
Representa el método que controla el evento PageIndexChanging de un control DetailsView.
public delegate void DetailsViewPageEventHandler(System::Object ^ sender, DetailsViewPageEventArgs ^ e);
public delegate void DetailsViewPageEventHandler(object sender, DetailsViewPageEventArgs e);
type DetailsViewPageEventHandler = delegate of obj * DetailsViewPageEventArgs -> unit
Public Delegate Sub DetailsViewPageEventHandler(sender As Object, e As DetailsViewPageEventArgs)
Parámetros
- sender
- Object
Origen del evento.
Objeto DetailsViewPageEventArgs que contiene los datos del evento.
Ejemplos
En el ejemplo de código siguiente se muestra cómo agregar mediante programación un DetailsViewPageEventHandler delegado al PageIndexChanging evento de un 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 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.PageIndexChanging += new DetailsViewPageEventHandler(this.CustomerDetailsView_PageIndexChanging);
customerDetailsView.ModeChanging += new DetailsViewModeEventHandler(this.CustomerDetailsView_ModeChanging);
// Add the DetailsView object to the Controls collection
// of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView);
}
void CustomerDetailsView_PageIndexChanging(Object sender, DetailsViewPageEventArgs e)
{
// Use the sender parameter to access the DetailsView control
// that raised the event.
DetailsView customerDetailsView = (DetailsView)sender;
// Cancel the paging operation if the DetailsView control
// in edit mode.
if (customerDetailsView.CurrentMode == DetailsViewMode.Edit)
{
e.Cancel = true;
// Display an error message.
int newPage = e.NewPageIndex + 1;
MessageLabel.Text = "Please update the current record before to moving to page " +
newPage.ToString() + ".";
}
}
void CustomerDetailsView_ModeChanging(Object sender, DetailsViewModeEventArgs e)
{
// Clear the message label when the user changes mode.
MessageLabel.Text = "";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewPageEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewPageEventHandler 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(ByVal sender As Object, ByVal 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.PageIndexChanging, AddressOf CustomerDetailsView_PageIndexChanging
AddHandler customerDetailsView.ModeChanging, AddressOf CustomerDetailsView_ModeChanging
' Add the DetailsView object to the Controls collection
' of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView)
End Sub
Sub CustomerDetailsView_PageIndexChanging(ByVal sender As Object, ByVal e As DetailsViewPageEventArgs)
' Use the sender parameter to access the DetailsView control
' that raised the event.
Dim customerDetailsView As DetailsView = CType(sender, DetailsView)
' Cancel the paging operation if the DetailsView control
' in edit mode.
If customerDetailsView.CurrentMode = DetailsViewMode.Edit Then
e.Cancel = True
' Display an error message.
Dim newPage As Integer = e.NewPageIndex + 1
MessageLabel.Text = "Please update the current record before to moving to page " & _
newPage.ToString() & "."
End If
End Sub
Sub CustomerDetailsView_ModeChanging(ByVal sender As Object, ByVal e As DetailsViewModeEventArgs)
' Clear the message label when the user changes mode.
MessageLabel.Text = ""
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewPageEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewPageEventHandler 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>
En el ejemplo de código siguiente se muestra cómo agregar declarativamente un DetailsViewPageEventHandler delegado al PageIndexChanging evento de un 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 CustomerDetailsView_PageIndexChanging(Object sender, DetailsViewPageEventArgs e)
{
// Cancel the paging operation if the DetailsView control
// in edit mode.
if (CustomerDetailsView.CurrentMode == DetailsViewMode.Edit)
{
e.Cancel = true;
// Display an error message.
int newPage = e.NewPageIndex + 1;
MessageLabel.Text = "Please update the current record before to moving to page " +
newPage.ToString() + ".";
}
}
void CustomerDetailsView_ModeChanging(Object sender, DetailsViewModeEventArgs e)
{
// Clear the message label when the user changes mode.
MessageLabel.Text = "";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewPageEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewPageEventHandler Example</h3>
<asp:detailsview id="CustomerDetailsView"
datasourceid="DetailsViewSource"
autogeneraterows="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
allowpaging="true"
onpageindexchanging="CustomerDetailsView_PageIndexChanging"
onmodechanging="CustomerDetailsView_ModeChanging"
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" %>
<!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_PageIndexChanging(ByVal sender As Object, ByVal e As DetailsViewPageEventArgs) Handles CustomerDetailsView.PageIndexChanging
' Cancel the paging operation if the DetailsView control
' in edit mode.
If CustomerDetailsView.CurrentMode = DetailsViewMode.Edit Then
e.Cancel = True
' Display an error message.
Dim newPage As Integer = e.NewPageIndex + 1
MessageLabel.Text = "Please update the current record before to moving to page " & _
newPage.ToString() & "."
End If
End Sub
Sub CustomerDetailsView_ModeChanging(ByVal sender As Object, ByVal e As DetailsViewModeEventArgs) Handles CustomerDetailsView.ModeChanging
' Clear the message label when the user changes mode.
MessageLabel.Text = ""
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewPageEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewPageEventHandler Example</h3>
<asp:detailsview id="CustomerDetailsView"
datasourceid="DetailsViewSource"
autogeneraterows="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
allowpaging="true"
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>
Comentarios
El DetailsView control genera el PageIndexChanging evento cuando se hace clic en un botón de buscapersonas (un botón con su CommandName
propiedad establecida en "Page") dentro del control, pero antes de que el DetailsView control controle la operación de paginación. Esto le permite proporcionar un controlador de eventos que realice una rutina personalizada, como cancelar la operación de paginación, siempre que se produzca este evento.
Nota
Los botones de buscapersonas normalmente se encuentran en la fila del buscapersonas de un DetailsView control.
Cuando se crea un delegado DetailsViewPageEventHandler, se identifica el método que controlará el evento. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado. Para obtener más información sobre los delegados del controlador de eventos, consulte Control y generación de eventos.
Métodos de extensión
GetMethodInfo(Delegate) |
Obtiene un objeto que representa el método representado por el delegado especificado. |