EditCommandColumn Kelas
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.
Jenis kolom khusus untuk DataGrid kontrol yang berisi tombol Edit
untuk mengedit item data di setiap baris.
public ref class EditCommandColumn : System::Web::UI::WebControls::DataGridColumn
public class EditCommandColumn : System.Web.UI.WebControls.DataGridColumn
type EditCommandColumn = class
inherit DataGridColumn
Public Class EditCommandColumn
Inherits DataGridColumn
- Warisan
Contoh
Contoh kode berikut menunjukkan cara menambahkan EditCommandColumn objek ke DataGrid kontrol.
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!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" >
<script runat="server">
// The Cart and CartView objects temporarily store the data source
// for the DataGrid control while the page is being processed.
DataTable Cart = new DataTable();
DataView CartView;
void Page_Load(Object sender, EventArgs e)
{
// With a database, use an select query to retrieve the data. Because
// the data source in this example is an in-memory DataTable, retrieve
// the data from session state if it exists; otherwise, create the data
// source.
GetSource();
// The DataGrid control maintains state between posts to the server;
// it only needs to be bound to a data source the first time the page
// is loaded or when the data source is updated.
if (!IsPostBack)
{
BindGrid();
}
}
void ItemsGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
// Set the EditItemIndex property to the index of the item clicked
// in the DataGrid control to enable editing for that item. Be sure
// to rebind the DateGrid to the data source to refresh the control.
ItemsGrid.EditItemIndex = e.Item.ItemIndex;
BindGrid();
}
void ItemsGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{
// Set the EditItemIndex property to -1 to exit editing mode.
// Be sure to rebind the DateGrid to the data source to refresh
// the control.
ItemsGrid.EditItemIndex = -1;
BindGrid();
}
void ItemsGrid_Update(Object sender, DataGridCommandEventArgs e)
{
// Retrieve the text boxes that contain the values to update.
// For bound columns, the edited value is stored in a TextBox.
// The TextBox is the 0th control in a cell's Controls collection.
// Each cell in the Cells collection of a DataGrid item represents
// a column in the DataGrid control.
TextBox qtyText = (TextBox)e.Item.Cells[3].Controls[0];
TextBox priceText = (TextBox)e.Item.Cells[4].Controls[0];
// Retrieve the updated values.
String item = e.Item.Cells[2].Text;
String qty = qtyText.Text;
String price = priceText.Text;
DataRow dr;
// With a database, use an update command to update the data.
// Because the data source in this example is an in-memory
// DataTable, delete the old row and replace it with a new one.
// Remove the old entry and clear the row filter.
CartView.RowFilter = "Item='" + item + "'";
if (CartView.Count > 0)
{
CartView.Delete(0);
}
CartView.RowFilter = "";
// ***************************************************************
// Insert data validation code here. Be sure to validate the
// values entered by the user before converting to the appropriate
// data types and updating the data source.
// ***************************************************************
// Add the new entry.
dr = Cart.NewRow();
dr[0] = Convert.ToInt32(qty);
dr[1] = item;
// If necessary, remove the '$' character from the price before
// converting it to a Double.
if(price[0] == '$')
{
dr[2] = Convert.ToDouble(price.Substring(1));
}
else
{
dr[2] = Convert.ToDouble(price);
}
Cart.Rows.Add(dr);
// Set the EditItemIndex property to -1 to exit editing mode.
// Be sure to rebind the DateGrid to the data source to refresh
// the control.
ItemsGrid.EditItemIndex = -1;
BindGrid();
}
void BindGrid()
{
// Set the data source and bind to the Data Grid control.
ItemsGrid.DataSource = CartView;
ItemsGrid.DataBind();
}
void GetSource()
{
// For this example, the data source is a DataTable that is stored
// in session state. If the data source does not exist, create it;
// otherwise, load the data.
if (Session["ShoppingCart"] == null)
{
// Create the sample data.
DataRow dr;
// Define the columns of the table.
Cart.Columns.Add(new DataColumn("Qty", typeof(Int32)));
Cart.Columns.Add(new DataColumn("Item", typeof(String)));
Cart.Columns.Add(new DataColumn("Price", typeof(Double)));
// Store the table in session state to persist its values
// between posts to the server.
Session["ShoppingCart"] = Cart;
// Populate the DataTable with sample data.
for (int i = 1; i <= 9; i++)
{
dr = Cart.NewRow();
if (i % 2 != 0)
{
dr[0] = 2;
}
else
{
dr[0] = 1;
}
dr[1] = "Item " + i.ToString();
dr[2] = (1.23 * (i + 1));
Cart.Rows.Add(dr);
}
}
else
{
// Retrieve the sample data from session state.
Cart = (DataTable)Session["ShoppingCart"];
}
// Create a DataView and specify the field to sort by.
CartView = new DataView(Cart);
CartView.Sort="Item";
return;
}
void ItemsGrid_Command(Object sender, DataGridCommandEventArgs e)
{
switch(((LinkButton)e.CommandSource).CommandName)
{
case "Delete":
DeleteItem(e);
break;
// Add other cases here, if there are multiple ButtonColumns in
// the DataGrid control.
default:
// Do nothing.
break;
}
}
void DeleteItem(DataGridCommandEventArgs e)
{
// e.Item is the table row where the command is raised. For bound
// columns, the value is stored in the Text property of a TableCell.
TableCell itemCell = e.Item.Cells[2];
string item = itemCell.Text;
// Remove the selected item from the data source.
CartView.RowFilter = "Item='" + item + "'";
if (CartView.Count > 0)
{
CartView.Delete(0);
}
CartView.RowFilter = "";
// Rebind the data source to refresh the DataGrid control.
BindGrid();
}
</script>
<head runat="server">
<title>DataGrid Editing Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGrid Editing Example</h3>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
OnEditCommand="ItemsGrid_Edit"
OnCancelCommand="ItemsGrid_Cancel"
OnUpdateCommand="ItemsGrid_Update"
OnItemCommand="ItemsGrid_Command"
AutoGenerateColumns="false"
runat="server">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<Columns>
<asp:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update"
HeaderText="Edit item">
<ItemStyle Wrap="False">
</ItemStyle>
<HeaderStyle Wrap="False">
</HeaderStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn
HeaderText="Delete item"
ButtonType="LinkButton"
Text="Delete"
CommandName="Delete"/>
<asp:BoundColumn HeaderText="Item"
ReadOnly="True"
DataField="Item"/>
<asp:BoundColumn HeaderText="Quantity"
DataField="Qty"/>
<asp:BoundColumn HeaderText="Price"
DataField="Price"
DataFormatString="{0:c}"/>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!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" >
<script runat="server">
' The Cart and CartView objects temporarily store the data source
' for the DataGrid control while the page is being processed.
Dim Cart As DataTable = New DataTable()
Dim CartView As DataView
Sub Page_Load(sender As Object, e As EventArgs)
' With a database, use an select query to retrieve the data. Because
' the data source in this example is an in-memory DataTable, retrieve
' the data from session state if it exists; otherwise create the data
' source.
GetSource()
' The DataGrid control maintains state between posts to the server;
' it only needs to be bound to a data source the first time the page
' is loaded or when the data source is updated.
If Not IsPostBack Then
BindGrid()
End If
End Sub
Sub ItemsGrid_Edit(sender As Object, e As DataGridCommandEventArgs)
' Set the EditItemIndex property to the index of the item clicked
' in the DataGrid control to enable editing for that item. Be sure
' to rebind the DateGrid to the data source to refresh the control.
ItemsGrid.EditItemIndex = e.Item.ItemIndex
BindGrid()
End Sub
Sub ItemsGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
' Set the EditItemIndex property to -1 to exit editing mode.
' Be sure to rebind the DateGrid to the data source to refresh
' the control.
ItemsGrid.EditItemIndex = -1
BindGrid()
End Sub
Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs)
' Retrieve the text boxes that contain the values to update.
' For bound columns, the edited value is stored in a TextBox.
' The TextBox is the 0th control in a cell's Controls collection.
' Each cell in the Cells collection of a DataGrid item represents
' a column in the DataGrid control.
Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
Dim priceText As TextBox = CType(e.Item.Cells(4).Controls(0), TextBox)
' Retrieve the updated values.
Dim item As String = e.Item.Cells(2).Text
Dim qty As String = qtyText.Text
Dim price As String = priceText.Text
Dim dr As DataRow
' With a database, use an update command to update the data.
' Because the data source in this example is an in-memory
' DataTable, delete the old row and replace it with a new one.
' Remove the old entry and clear the row filter.
CartView.RowFilter = "Item='" & item & "'"
If CartView.Count > 0 Then
CartView.Delete(0)
End If
CartView.RowFilter = ""
' ***************************************************************
' Insert data validation code here. Be sure to validate the
' values entered by the user before converting to the appropriate
' data types and updating the data source.
' ***************************************************************
' Add the new entry.
dr = Cart.NewRow()
dr(0) = Convert.ToInt32(qty)
dr(1) = item
' If necessary, remove the '$' character from the price before
' converting it to a Double.
If price.Chars(0) = "$" Then
dr(2) = Convert.ToDouble(price.Substring(1))
Else
dr(2) = Convert.ToDouble(price)
End If
Cart.Rows.Add(dr)
' Set the EditItemIndex property to -1 to exit editing mode.
' Be sure to rebind the DateGrid to the data source to refresh
' the control.
ItemsGrid.EditItemIndex = -1
BindGrid()
End Sub
Sub BindGrid()
' Set the data source and bind to the Data Grid control.
ItemsGrid.DataSource = CartView
ItemsGrid.DataBind()
End Sub
Sub GetSource()
' For this example, the data source is a DataTable that is stored
' in session state. If the data source does not exist, create it;
' otherwise, load the data.
If Session("ShoppingCart") Is Nothing Then
' Create the sample data.
Dim dr As DataRow
' Define the columns of the table.
Cart.Columns.Add(new DataColumn("Qty", GetType(Int32)))
Cart.Columns.Add(new DataColumn("Item", GetType(String)))
Cart.Columns.Add(new DataColumn("Price", GetType(Double)))
' Store the table in session state to persist its values
' between posts to the server.
Session("ShoppingCart") = Cart
' Populate the DataTable with sample data.
Dim i As Integer
For i = 1 To 9
dr = Cart.NewRow()
If (i Mod 2) <> 0 Then
dr(0) = 2
Else
dr(0) = 1
End If
dr(1) = "Item " & i.ToString()
dr(2) = (1.23 * (i + 1))
Cart.Rows.Add(dr)
Next i
Else
' Retrieve the sample data from session state.
Cart = CType(Session("ShoppingCart"), DataTable)
End If
' Create a DataView and specify the field to sort by.
CartView = New DataView(Cart)
CartView.Sort="Item"
Return
End Sub
Sub ItemsGrid_Command(sender As Object, e As DataGridCommandEventArgs)
Select (CType(e.CommandSource, LinkButton)).CommandName
Case "Delete"
DeleteItem(e)
' Add other cases here, if there are multiple ButtonColumns in
' the DataGrid control.
Case Else
' Do nothing.
End Select
End Sub
Sub DeleteItem(e As DataGridCommandEventArgs)
' e.Item is the table row where the command is raised. For bound
' columns, the value is stored in the Text property of a TableCell.
Dim itemCell As TableCell = e.Item.Cells(2)
Dim item As String = itemCell.Text
' Remove the selected item from the data source.
CartView.RowFilter = "Item='" & item + "'"
If CartView.Count > 0 Then
CartView.Delete(0)
End If
CartView.RowFilter = ""
' Rebind the data source to refresh the DataGrid control.
BindGrid()
End Sub
</script>
<head runat="server">
<title>DataGrid Editing Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGrid Editing Example</h3>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
OnEditCommand="ItemsGrid_Edit"
OnCancelCommand="ItemsGrid_Cancel"
OnUpdateCommand="ItemsGrid_Update"
OnItemCommand="ItemsGrid_Command"
AutoGenerateColumns="false"
runat="server">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<Columns>
<asp:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update"
HeaderText="Edit item">
<ItemStyle Wrap="False">
</ItemStyle>
<HeaderStyle Wrap="False">
</HeaderStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn
HeaderText="Delete item"
ButtonType="LinkButton"
Text="Delete"
CommandName="Delete"/>
<asp:BoundColumn HeaderText="Item"
ReadOnly="True"
DataField="Item"/>
<asp:BoundColumn HeaderText="Quantity"
DataField="Qty"/>
<asp:BoundColumn HeaderText="Price"
DataField="Price"
DataFormatString="{0:c}"/>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
Keterangan
EditCommandColumn Gunakan kelas untuk membuat kolom khusus untuk DataGrid kontrol yang berisi tombol Edit
, Update
, dan Cancel
untuk setiap baris data di kisi. Tombol ini memungkinkan Anda mengedit nilai baris dalam DataGrid kontrol.
Jika tidak ada baris yang dipilih, tombol Edit
akan ditampilkan dalam EditCommandColumn objek untuk setiap baris data dalam DataGrid kontrol. Saat tombol Edit
untuk item diklik, EditCommand peristiwa dinaikkan dan tombol Edit
diganti dengan tombol Update
dan Cancel
. Anda perlu menyediakan kode untuk menangani EditCommand peristiwa. Penanganan aktivitas umum mengatur EditItemIndex properti ke baris yang dipilih, lalu mengikat ulang data ke DataGrid kontrol.
Catatan
Anda harus menyediakan nilai untuk CancelTextproperti , EditText, dan UpdateText . Jika tidak, tombol terkait tidak akan muncul di EditCommandColumn.
Tombol dalam EditCommandColumn dapat diatur untuk ditampilkan sebagai hyperlink atau tombol tekan dengan mengatur ButtonType properti .
Mengklik tombol Update
atau Cancel
masing-masing menaikkan UpdateCommand atau CancelCommand peristiwa. Anda perlu menyediakan kode untuk menangani peristiwa ini.
Handler umum untuk UpdateCommand peristiwa memperbarui data, mengatur EditItemIndex properti ke -1
(untuk membatalkan pilihan item), lalu mengikat ulang data ke DataGrid kontrol.
Handler umum untuk CancelCommand peristiwa mengatur EditItemIndex properti ke -1
(untuk membatalkan pilihan item), lalu mengikat ulang data ke DataGrid kontrol.
Perhatian
Objek EditCommandColumn dapat digunakan untuk menampilkan input pengguna, yang mungkin menyertakan skrip klien berbahaya. Periksa informasi apa pun yang dikirim dari klien untuk skrip yang dapat dieksekusi, pernyataan SQL, atau kode lain sebelum menampilkannya di aplikasi Anda. Anda dapat menggunakan kontrol validasi untuk memverifikasi input pengguna sebelum menampilkan teks input dalam DataGrid kontrol. ASP.NET menyediakan fitur validasi permintaan input untuk memblokir skrip dan HTML dalam input pengguna. Untuk informasi selengkapnya, lihat Mengamankan Kontrol Standar, Cara: Melindungi Dari Eksploitasi Skrip di Aplikasi Web dengan Menerapkan Pengodean HTML ke String, dan Memvalidasi Input Pengguna di Halaman Web ASP.NET.
Secara default, validasi halaman dilakukan saat tombol Update
dalam kontrol diklik EditCommandColumn . Validasi halaman menentukan apakah kontrol input yang terkait dengan kontrol validasi pada halaman semuanya melewati aturan validasi yang ditentukan oleh kontrol validasi. Untuk mencegah terjadinya validasi halaman, atur properti ke CausesValidationfalse
.
Konstruktor
EditCommandColumn() |
Menginisialisasi instans baru kelas EditCommandColumn. |
Properti
ButtonType |
Mendapatkan atau mengatur jenis tombol untuk kolom. |
CancelText |
Mendapatkan atau mengatur teks yang akan ditampilkan untuk tombol |
CausesValidation |
Mendapatkan atau mengatur nilai yang menunjukkan apakah validasi dilakukan saat tombol |
DesignMode |
Mendapatkan nilai yang menunjukkan apakah kolom berada dalam mode desain. (Diperoleh dari DataGridColumn) |
EditText |
Mendapatkan atau mengatur teks yang akan ditampilkan untuk tombol |
FooterStyle |
Mendapatkan properti gaya untuk bagian footer kolom. (Diperoleh dari DataGridColumn) |
FooterText |
Mendapatkan atau mengatur teks yang ditampilkan di bagian footer kolom. (Diperoleh dari DataGridColumn) |
HeaderImageUrl |
Mendapatkan atau mengatur lokasi gambar untuk ditampilkan di bagian header kolom. (Diperoleh dari DataGridColumn) |
HeaderStyle |
Mendapatkan properti gaya untuk bagian header kolom. (Diperoleh dari DataGridColumn) |
HeaderText |
Mendapatkan atau mengatur teks yang ditampilkan di bagian header kolom. (Diperoleh dari DataGridColumn) |
IsTrackingViewState |
Mendapatkan nilai yang menentukan apakah DataGridColumn objek ditandai untuk menyimpan statusnya. (Diperoleh dari DataGridColumn) |
ItemStyle |
Mendapatkan properti gaya untuk sel item kolom. (Diperoleh dari DataGridColumn) |
Owner |
DataGrid Mendapatkan kontrol bahwa kolom adalah anggotanya. (Diperoleh dari DataGridColumn) |
SortExpression |
Mendapatkan atau mengatur nama bidang atau ekspresi untuk diteruskan ke OnSortCommand(DataGridSortCommandEventArgs) metode saat kolom dipilih untuk pengurutan. (Diperoleh dari DataGridColumn) |
UpdateText |
Mendapatkan atau mengatur teks yang akan ditampilkan untuk tombol |
ValidationGroup |
Mendapatkan atau mengatur grup kontrol validasi yang EditCommandColumn objeknya menyebabkan validasi saat memposting kembali ke server. |
ViewState |
StateBag Mendapatkan objek yang memungkinkan kolom yang berasal dari DataGridColumn kelas untuk menyimpan propertinya. (Diperoleh dari DataGridColumn) |
Visible |
Mendapatkan atau mengatur nilai yang menunjukkan apakah kolom terlihat dalam DataGrid kontrol. (Diperoleh dari DataGridColumn) |
Metode
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
Initialize() |
Menyediakan implementasi dasar untuk mengatur ulang kolom yang berasal dari DataGridColumn kelas ke status awalnya. (Diperoleh dari DataGridColumn) |
InitializeCell(TableCell, Int32, ListItemType) |
Menginisialisasi sel di dalam kolom. |
LoadViewState(Object) |
Memuat status DataGridColumn objek. (Diperoleh dari DataGridColumn) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
OnColumnChanged() |
OnColumnsChanged() Memanggil metode . (Diperoleh dari DataGridColumn) |
SaveViewState() |
Menyimpan status DataGridColumn objek saat ini. (Diperoleh dari DataGridColumn) |
ToString() |
Mengembalikan representasi string kolom. (Diperoleh dari DataGridColumn) |
TrackViewState() |
Menyebabkan pelacakan perubahan status tampilan pada kontrol server sehingga dapat disimpan di objek kontrol StateBag server. (Diperoleh dari DataGridColumn) |
Implementasi Antarmuka Eksplisit
IStateManager.IsTrackingViewState |
Mendapatkan nilai yang menunjukkan apakah kolom melacak perubahan status tampilan. (Diperoleh dari DataGridColumn) |
IStateManager.LoadViewState(Object) |
Memuat status yang disimpan sebelumnya. (Diperoleh dari DataGridColumn) |
IStateManager.SaveViewState() |
Mengembalikan objek yang berisi perubahan status. (Diperoleh dari DataGridColumn) |
IStateManager.TrackViewState() |
Mulai melacak perubahan status. (Diperoleh dari DataGridColumn) |