DetailsViewCommandEventHandler Delegasikan
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili metode yang menangani ItemCommand peristiwa DetailsView kontrol.
public delegate void DetailsViewCommandEventHandler(System::Object ^ sender, DetailsViewCommandEventArgs ^ e);
public delegate void DetailsViewCommandEventHandler(object sender, DetailsViewCommandEventArgs e);
type DetailsViewCommandEventHandler = delegate of obj * DetailsViewCommandEventArgs -> unit
Public Delegate Sub DetailsViewCommandEventHandler(sender As Object, e As DetailsViewCommandEventArgs)
Parameter
- sender
- Object
Sumber dari peristiwa tersebut.
DetailsViewCommandEventArgs yang berisi data peristiwa.
Contoh
Contoh kode berikut menunjukkan cara menambahkan DetailsViewCommandEventHandler delegasi secara terprogram ke ItemCommand peristiwa DetailsView kontrol. Contoh ini menggunakan model pengkodian file tunggal.
<%@ 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.AllowPaging = true;
customerDetailsView.DataKeyNames = new String[1] { "CustomerID" };
// Add a button field to the DetailsView control.
ButtonField field = new ButtonField();
field.ButtonType = ButtonType.Link;
field.CausesValidation = false;
field.Text = "Add to List";
field.CommandName="Add";
customerDetailsView.Fields.Add(field);
// Programmatically register the event-handling method
// for the ItemDeleting event of a DetailsView control.
customerDetailsView.ItemCommand
+= new DetailsViewCommandEventHandler(
this.CustomerDetailsView_ItemCommand);
// Add the DetailsView object to the Controls collection
// of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView);
}
void CustomerDetailsView_ItemCommand(Object sender,
DetailsViewCommandEventArgs e)
{
// Use the CommandName property to determine which button
// was clicked.
if (e.CommandName == "Add")
{
// Get the DetailsView control that raised the event.
DetailsView customerDetailsView = (DetailsView)e.CommandSource;
// Add the current customer to the customer list.
// Get the row that contains the company name. In this
// example, the company name is in the second row (index 1)
// of the DetailsView control.
DetailsViewRow row = customerDetailsView.Rows[1];
// Get the company's name from the appropriate cell.
// In this example, the company name is in the second cell
// (index 1) of the row.
String name = row.Cells[1].Text;
// Create a ListItem object with the company name.
ListItem item = new ListItem(name);
// Add the ListItem object to the ListBox, if the
// item doesn't already exist.
if (!CustomerListBox.Items.Contains(item))
{
CustomerListBox.Items.Add(item);
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewCommandEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewCommandEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:placeholder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
Selected Customers:<br/>
<asp:listbox id="CustomerListBox"
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]"
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.AllowPaging = True
Dim keyArray() As String = {"CustomerID"}
customerDetailsView.DataKeyNames = keyArray
' Add a button field to the DetailsView control.
Dim field As New ButtonField()
field.ButtonType = ButtonType.Link
field.CausesValidation = False
field.Text = "Add to List"
field.CommandName = "Add"
customerDetailsView.Fields.Add(field)
' Programmatically register the event-handling method
' for the ItemDeleting event of a DetailsView control.
AddHandler customerDetailsView.ItemCommand, _
AddressOf CustomerDetailsView_ItemCommand
' Add the DetailsView object to the Controls collection
' of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView)
End Sub
Sub CustomerDetailsView_ItemCommand(ByVal sender As Object, _
ByVal e As DetailsViewCommandEventArgs)
' Use the CommandName property to determine which button
' was clicked.
If e.CommandName = "Add" Then
' Get the DetailsView control that raised the event.
Dim customerDetailsView As DetailsView = _
CType(e.CommandSource, DetailsView)
' Add the current customer to the customer list.
' Get the row that contains the company name. In this
' example, the company name is in the second row (index 1)
' of the DetailsView control.
Dim row As DetailsViewRow = customerDetailsView.Rows(1)
' Get the company's name from the appropriate cell.
' In this example, the company name is in the second cell
' (index 1) of the row.
Dim name As String = row.Cells(1).Text
' Create a ListItem object with the company name.
Dim item As New ListItem(name)
' Add the ListItem object to the ListBox, if the
' item doesn't already exist.
If Not CustomerListBox.Items.Contains(item) Then
CustomerListBox.Items.Add(item)
End If
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewCommandEventHandler Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DetailsViewCommandEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:placeholder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
Selected Customers:<br/>
<asp:listbox id="CustomerListBox"
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]"
connectionstring=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
Contoh kode berikut menunjukkan versi model pengodean kode di belakang contoh sebelumnya. Agar contoh ini berfungsi, Anda harus menyalin kode di bawah ini ke dalam file code-behind terkait.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewCommandEventHandler Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>DetailsViewCommandEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:placeholder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
Selected Customers:<br/>
<asp:listbox id="CustomerListBox"
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]"
connectionstring="
<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DefaultVB.aspx.vb" Inherits="DefaultVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DetailsViewCommandEventHandler Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>DetailsViewCommandEventHandler Example</h3>
<!-- Use a PlaceHolder control as the container for the -->
<!-- dynamically generated DetailsView control. -->
<asp:placeholder id="DetailsViewPlaceHolder"
runat="server"/>
<br/><br/>
Selected Customers:<br/>
<asp:listbox id="CustomerListBox"
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]"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>
Contoh kode berikut menunjukkan file code-behind untuk contoh sebelumnya.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected 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.AllowPaging = true;
customerDetailsView.DataKeyNames = new String[1] { "CustomerID" };
// Add a button field to the DetailsView control.
ButtonField field = new ButtonField();
field.ButtonType = ButtonType.Link;
field.CausesValidation = false;
field.Text = "Add to List";
field.CommandName = "Add";
customerDetailsView.Fields.Add(field);
// Programmatically register the event-handling method
// for the ItemDeleting event of a DetailsView control.
customerDetailsView.ItemCommand += new DetailsViewCommandEventHandler(this.CustomerDetailsView_ItemCommand);
// Add the DetailsView object to the Controls collection
// of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView);
}
void CustomerDetailsView_ItemCommand(Object sender, DetailsViewCommandEventArgs e)
{
// Use the CommandName property to determine which button
// was clicked.
if (e.CommandName == "Add")
{
// Get the DetailsView control that raised the event.
DetailsView customerDetailsView = (DetailsView)sender;
// Add the current customer to the customer list.
// Get the row that contains the company name. In this
// example, the company name is in the second row (index 1)
// of the DetailsView control.
DetailsViewRow row = customerDetailsView.Rows[1];
// Get the company's name from the appropriate cell.
// In this example, the company name is in the second cell
// (index 1) of the row.
String name = row.Cells[1].Text;
// Create a ListItem object with the company name.
ListItem item = new ListItem(name);
// Add the ListItem object to the ListBox, if the
// item doesn't already exist.
if (!CustomerListBox.Items.Contains(item))
{
CustomerListBox.Items.Add(item);
}
}
}
}
Partial Class DefaultVB
Inherits System.Web.UI.Page
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' 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.AllowPaging = True
Dim keyArray() As String = {"CustomerID"}
customerDetailsView.DataKeyNames = keyArray
' Add a button field to the DetailsView control.
Dim field As New ButtonField()
field.ButtonType = ButtonType.Link
field.CausesValidation = False
field.Text = "Add to List"
field.CommandName = "Add"
customerDetailsView.Fields.Add(field)
' Programmatically register the event-handling method
' for the ItemDeleting event of a DetailsView control.
AddHandler customerDetailsView.ItemCommand, AddressOf CustomerDetailsView_ItemCommand
' Add the DetailsView object to the Controls collection
' of the PlaceHolder control.
DetailsViewPlaceHolder.Controls.Add(customerDetailsView)
End Sub
Sub CustomerDetailsView_ItemCommand(ByVal sender As Object, ByVal e As DetailsViewCommandEventArgs)
' Use the CommandName property to determine which button
' was clicked.
If e.CommandName = "Add" Then
' Get the DetailsView control that raised the event.
Dim customerDetailsView As DetailsView = CType(sender, DetailsView)
' Add the current customer to the customer list.
' Get the row that contains the company name. In this
' example, the company name is in the second row (index 1)
' of the DetailsView control.
Dim row As DetailsViewRow = customerDetailsView.Rows(1)
' Get the company's name from the appropriate cell.
' In this example, the company name is in the second cell
' (index 1) of the row.
Dim name As String = row.Cells(1).Text
' Create a ListItem object with the company name.
Dim item As New ListItem(name)
' Add the ListItem object to the ListBox, if the
' item doesn't already exist.
If Not CustomerListBox.Items.Contains(item) Then
CustomerListBox.Items.Add(item)
End If
End If
End Sub
End Class
Contoh kode berikut menunjukkan cara menambahkan DetailsViewCommandEventHandler delegasi secara deklaratif ke ItemCommand peristiwa DetailsView kontrol.
<%@ 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 CustomerDetailView_ItemCommand(Object sender, DetailsViewCommandEventArgs e)
{
// Use the CommandName property to determine which button
// was clicked.
if (e.CommandName == "Add")
{
// Add the current store to the contact list.
// Get the row that contains the store name. In this
// example, the store name is in the second row (index 1)
// of the DetailsView control.
DetailsViewRow row = CustomerDetailView.Rows[1];
// Get the store's name from the appropriate cell.
// In this example, the store name is in the second cell
// (index 1) of the row.
String name = row.Cells[1].Text;
// Create a ListItem object with the store's name.
ListItem item = new ListItem(name);
// Add the ListItem object to the ListBox, if the
// item doesn't already exist.
if (!ContactListBox.Items.Contains(item))
{
ContactListBox.Items.Add(item);
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
DetailsView ItemCommand Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>
DetailsView ItemCommand Example</h3>
<asp:DetailsView ID="CustomerDetailView"
DataSourceID="DetailsViewSource"
AutoGenerateRows="false"
DataKeyNames="CustomerID"
AllowPaging="true"
OnItemCommand="CustomerDetailView_ItemCommand"
runat="server">
<FieldHeaderStyle BackColor="Navy" ForeColor="White" />
<Fields>
<asp:BoundField DataField="CustomerID" HeaderText="Store ID" />
<asp:BoundField DataField="CompanyName" HeaderText="Store Name" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:ButtonField CommandName="Add" Text="Add Contact" />
</Fields>
</asp:DetailsView>
<hr />
Contacts:<br />
<asp:ListBox ID="ContactListBox" 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" runat="server"
ConnectionString=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
InsertCommand="INSERT INTO [Customers]([CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country]) VALUES (@CustomerID, @CompanyName, @Address, @City, @PostalCode, @Country)"
SelectCommand="Select [CustomerID], [CompanyName],
[Address], [City], [PostalCode], [Country] From
[Customers]">
</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 CustomerDetailView_ItemCommand(ByVal sender As Object, ByVal e As DetailsViewCommandEventArgs)
' Use the CommandName property to determine which button
' was clicked.
If e.CommandName = "Add" Then
' Add the current store to the contact list.
' Get the row that contains the store name. In this
' example, the store name is in the second row (index 1)
' of the DetailsView control.
Dim row As DetailsViewRow = CustomerDetailView.Rows(1)
' Get the store's name from the appropriate cell.
' In this example, the store name is in the second cell
' (index 1) of the row.
Dim name As String = row.Cells(1).Text
' Create a ListItem object with the store's name.
Dim item As New ListItem(name)
' Add the ListItem object to the ListBox, if the
' item doesn't already exist.
If Not ContactListBox.Items.Contains(item) Then
ContactListBox.Items.Add(item)
End If
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
DetailsView ItemCommand Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>
DetailsView ItemCommand Example</h3>
<asp:DetailsView ID="CustomerDetailView"
DataSourceID="DetailsViewSource"
AutoGenerateRows="false"
DataKeyNames="CustomerID"
AllowPaging="true"
OnItemCommand="CustomerDetailView_ItemCommand"
runat="server">
<FieldHeaderStyle BackColor="Navy" ForeColor="White" />
<Fields>
<asp:BoundField DataField="CustomerID" HeaderText="Store ID" />
<asp:BoundField DataField="CompanyName" HeaderText="Store Name" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:ButtonField CommandName="Add" Text="Add Contact" />
</Fields>
</asp:DetailsView>
<hr />
Contacts:<br />
<asp:ListBox ID="ContactListBox" 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" runat="server"
ConnectionString=
"<%$ ConnectionStrings:NorthWindConnectionString%>"
InsertCommand="INSERT INTO [Customers]([CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country]) VALUES (@CustomerID, @CompanyName, @Address, @City, @PostalCode, @Country)"
SelectCommand="Select [CustomerID], [CompanyName],
[Address], [City], [PostalCode], [Country] From
[Customers]">
</asp:SqlDataSource>
</form>
</body>
</html>
Keterangan
DetailsView Kontrol menaikkan ItemCommand peristiwa saat tombol dalam ButtonFieldbidang baris , , CommandFieldatau TemplateField diklik. Ini memungkinkan Anda untuk menyediakan penanganan aktivitas yang melakukan rutinitas kustom setiap kali peristiwa ini terjadi.
Catatan
Kontrol ini DetailsView juga memunculkan peristiwa khusus lainnya ketika tombol tertentu diklik (tombol dengan CommandName
properti diatur ke "Hapus", "Sisipkan", "Halaman", atau "Perbarui"). Saat menggunakan salah satu tombol ini, Anda harus mempertimbangkan untuk menggunakan salah satu peristiwa khusus yang disediakan oleh kontrol (seperti ItemDeleted atau ItemDeleting).
Saat membuat DetailsViewCommandEventHandler delegasi, Anda mengidentifikasi metode yang akan menangani peristiwa. Untuk mengaitkan peristiwa dengan penanganan aktivitas Anda, tambahkan instans delegasi ke peristiwa. Penanganan aktivitas dipanggil setiap kali peristiwa terjadi, kecuali Anda menghapus delegasi. Untuk informasi selengkapnya tentang delegasi penanganan aktivitas, lihat Menangani dan Menaikkan Peristiwa.
Metode Ekstensi
GetMethodInfo(Delegate) |
Mendapatkan objek yang mewakili metode yang diwakili oleh delegasi yang ditentukan. |