Aracılığıyla paylaş


EditCommandColumn Sınıf

Tanım

Denetim için her satırdaki DataGrid veri öğelerini düzenleme düğmelerini içeren Edit özel bir sütun türü.

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
Devralma
EditCommandColumn

Örnekler

Aşağıdaki kod örneğinde bir EditCommandColumn denetime nesne DataGrid ekleme işlemi gösterilmektedir.


<%@ 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>

Açıklamalar

kılavuzdaki EditCommandColumn her veri satırı için DataGrid , Updateve Cancel düğmelerini içeren Editdenetim için özel bir sütun oluşturmak için sınıfını kullanın. Bu düğmeler denetimdeki bir satırın DataGrid değerlerini düzenlemenize olanak sağlar.

Hiçbir satır seçilmezse, denetimdeki EditCommandColumn her veri satırı için nesnede DataGrid bir Edit düğme görüntülenir. Edit Bir öğenin düğmesine tıklandığında olay EditCommand oluşturulur ve Edit düğme ve Cancel düğmeleriyle Update değiştirilir. Olayı işlemek EditCommand için kod sağlamanız gerekir. Tipik bir olay işleyicisi, özelliği seçili satıra ayarlar EditItemIndex ve ardından verileri denetime DataGrid yeniden ekler.

Not

, EditTextve UpdateText özellikleri için CancelTextdeğerler sağlamanız gerekir. Aksi takdirde, ilişkili düğmeler içinde EditCommandColumngörünmez.

içindeki EditCommandColumn düğmeler, özelliği ayarlanarak ButtonType köprü veya basma düğmeleri olarak görüntülenecek şekilde ayarlanabilir.

veya düğmesine tıklanması Update sırasıyla veya CancelCommand olayını tetiklerUpdateCommand.Cancel Bu olayları işlemek için kod sağlamanız gerekir.

Olay için UpdateCommand tipik bir işleyici verileri güncelleştirir, özelliğini -1 olarak ayarlar EditItemIndex (öğenin seçimini kaldırmak için) ve ardından verileri denetime DataGrid yeniden ekler.

Olay için CancelCommand tipik bir işleyici özelliği -1 olarak ayarlar EditItemIndex (öğenin seçimini kaldırmak için) ve ardından verileri denetime DataGrid yeniden ekler.

Dikkat

EditCommandColumn nesnesi, kötü amaçlı istemci betiği içerebilen kullanıcı girişini görüntülemek için kullanılabilir. Uygulamanızda görüntülemeden önce bir istemciden yürütülebilir betik, SQL deyimleri veya başka bir kod için gönderilen tüm bilgileri denetleyin. Denetimde DataGrid giriş metnini görüntülemeden önce kullanıcı girişini doğrulamak için doğrulama denetimlerini kullanabilirsiniz. ASP.NET, kullanıcı girişinde betiği ve HTML'yi engellemek için bir giriş isteği doğrulama özelliği sağlar. Daha fazla bilgi için bkz. Standart Denetimlerin Güvenliğini Sağlama, Nasıl yapılır: Dizelere HTML Kodlaması Uygulayarak ve ASP.NET Web Sayfalarında Kullanıcı Girişini Doğrulayarak Web Uygulamasında Betik Açıklarından Yararlanmaya Karşı Koruma.

Varsayılan olarak, denetimdeki EditCommandColumn bir Update düğmeye tıklandığında sayfa doğrulaması gerçekleştirilir. Sayfa doğrulama, sayfadaki bir doğrulama denetimiyle ilişkili giriş denetimlerinin tümünün doğrulama denetimi tarafından belirtilen doğrulama kurallarını geçirip geçirmediğini belirler. Sayfa doğrulamasının gerçekleşmesini önlemek için özelliğini olarak falseayarlayınCausesValidation.

Oluşturucular

EditCommandColumn()

EditCommandColumn sınıfının yeni bir örneğini başlatır.

Özellikler

ButtonType

Sütun için düğme türünü alır veya ayarlar.

CancelText

içindeki komut düğmesi EditCommandColumniçin Cancel görüntülenecek metni alır veya ayarlar.

CausesValidation

Nesnedeki EditCommandColumn bir düğmeye tıklandığında doğrulamanın gerçekleştirilip gerçekleştirilmeyeceğini belirten bir Update değer alır veya ayarlar.

DesignMode

Sütunun tasarım modunda olup olmadığını gösteren bir değer alır.

(Devralındığı yer: DataGridColumn)
EditText

içindeki düğme EditCommandColumniçin Edit görüntülenecek metni alır veya ayarlar.

FooterStyle

Sütunun alt bilgi bölümünün stil özelliklerini alır.

(Devralındığı yer: DataGridColumn)
FooterText

Sütunun alt bilgi bölümünde görüntülenen metni alır veya ayarlar.

(Devralındığı yer: DataGridColumn)
HeaderImageUrl

Sütunun üst bilgi bölümünde görüntülenecek görüntünün konumunu alır veya ayarlar.

(Devralındığı yer: DataGridColumn)
HeaderStyle

Sütunun üst bilgi bölümünün stil özelliklerini alır.

(Devralındığı yer: DataGridColumn)
HeaderText

Sütunun üst bilgi bölümünde görüntülenen metni alır veya ayarlar.

(Devralındığı yer: DataGridColumn)
IsTrackingViewState

Nesnenin DataGridColumn durumunu kaydetmek için işaretlenip işaretlenmediğini belirleyen bir değer alır.

(Devralındığı yer: DataGridColumn)
ItemStyle

Sütunun öğe hücrelerinin stil özelliklerini alır.

(Devralındığı yer: DataGridColumn)
Owner

Sütunun DataGrid üyesi olduğu denetimi alır.

(Devralındığı yer: DataGridColumn)
SortExpression

Sıralama için bir sütun seçildiğinde yöntemine geçirilmesi için alanın veya ifadenin OnSortCommand(DataGridSortCommandEventArgs) adını alır veya ayarlar.

(Devralındığı yer: DataGridColumn)
UpdateText

içindeki komut düğmesi EditCommandColumniçin Update görüntülenecek metni alır veya ayarlar.

ValidationGroup

Nesnenin sunucuya geri gönderildiğinde doğrulamaya EditCommandColumn neden olduğu doğrulama denetimleri grubunu alır veya ayarlar.

ViewState

sınıfından StateBag türetilmiş bir sütunun DataGridColumn özelliklerini depolamasına izin veren nesnesini alır.

(Devralındığı yer: DataGridColumn)
Visible

Sütunun denetimde DataGrid görünür olup olmadığını gösteren bir değer alır veya ayarlar.

(Devralındığı yer: DataGridColumn)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
Initialize()

sınıfından türetilen DataGridColumn bir sütunu ilk durumuna sıfırlamak için temel uygulamayı sağlar.

(Devralındığı yer: DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Sütun içindeki bir hücreyi başlatır.

LoadViewState(Object)

Nesnenin DataGridColumn durumunu yükler.

(Devralındığı yer: DataGridColumn)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnColumnChanged()

OnColumnsChanged() yöntemini çağırır.

(Devralındığı yer: DataGridColumn)
SaveViewState()

Nesnenin geçerli durumunu DataGridColumn kaydeder.

(Devralındığı yer: DataGridColumn)
ToString()

Sütunun dize gösterimini döndürür.

(Devralındığı yer: DataGridColumn)
TrackViewState()

Sunucu denetiminin nesnesinde depolanabilmeleri için sunucu StateBag denetiminde görünüm durumu değişikliklerinin izlenmesine neden olur.

(Devralındığı yer: DataGridColumn)

Belirtik Arabirim Kullanımları

IStateManager.IsTrackingViewState

Sütunun görünüm durumunun değişikliklerini izleyip izlemediğini gösteren bir değer alır.

(Devralındığı yer: DataGridColumn)
IStateManager.LoadViewState(Object)

Önceden kaydedilmiş durumu yükler.

(Devralındığı yer: DataGridColumn)
IStateManager.SaveViewState()

Durum değişikliklerini içeren bir nesne döndürür.

(Devralındığı yer: DataGridColumn)
IStateManager.TrackViewState()

Durum değişikliklerini izlemeye başlar.

(Devralındığı yer: DataGridColumn)

Şunlara uygulanır

Ayrıca bkz.