EditCommandColumn Kelas

Definisi

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
EditCommandColumn

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 Edittombol , 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, Edit tombol 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 memberikan 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 dorong dengan mengatur ButtonType properti .

Mengklik tombol Update atau Cancel menaikkan UpdateCommand atau CancelCommand peristiwa, masing-masing. Anda perlu memberikan 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 lainnya 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 dalam 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 Cancel perintah di EditCommandColumn.

CausesValidation

Mendapatkan atau mengatur nilai yang menunjukkan apakah validasi dilakukan saat Update tombol dalam objek diklik EditCommandColumn .

DesignMode

Mendapatkan nilai yang menunjukkan apakah kolom berada dalam mode desain.

(Diperoleh dari DataGridColumn)
EditText

Mendapatkan atau mengatur teks yang akan ditampilkan untuk tombol Edit di EditCommandColumn.

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 Update perintah di EditCommandColumn.

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 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 yang 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)

Berlaku untuk

Lihat juga