Export (0) Print
Expand All

EditCommandColumn Class

A special column type for the DataGrid control that contains the Edit buttons for editing data items in each row.

System.Object
  System.Web.UI.WebControls.DataGridColumn
    System.Web.UI.WebControls.EditCommandColumn

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

public class EditCommandColumn : DataGridColumn

The EditCommandColumn type exposes the following members.

  NameDescription
Public methodEditCommandColumnInitializes a new instance of the EditCommandColumn class.
Top

  NameDescription
Public propertyButtonTypeGets or sets the button type for the column.
Public propertyCancelTextGets or sets the text to display for the Cancel command button in the EditCommandColumn.
Public propertyCausesValidationGets or sets a value indicating whether validation is performed when an Update button in the EditCommandColumn object is clicked.
Protected propertyDesignModeGets a value that indicates whether the column is in design mode. (Inherited from DataGridColumn.)
Public propertyEditTextGets or sets the text to display for the Edit button in the EditCommandColumn.
Public propertyFooterStyleGets the style properties for the footer section of the column. (Inherited from DataGridColumn.)
Public propertyFooterTextGets or sets the text displayed in the footer section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderImageUrlGets or sets the location of an image to display in the header section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderStyleGets the style properties for the header section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderTextGets or sets the text displayed in the header section of the column. (Inherited from DataGridColumn.)
Protected propertyIsTrackingViewStateGets a value that determines whether the DataGridColumn object is marked to save its state. (Inherited from DataGridColumn.)
Public propertyItemStyleGets the style properties for the item cells of the column. (Inherited from DataGridColumn.)
Protected propertyOwnerGets the DataGrid control that the column is a member of. (Inherited from DataGridColumn.)
Public propertySortExpressionGets or sets the name of the field or expression to pass to the OnSortCommand method when a column is selected for sorting. (Inherited from DataGridColumn.)
Public propertyUpdateTextGets or sets the text to display for the Update command button in the EditCommandColumn.
Public propertyValidationGroupGets or sets the group of validation controls for which the EditCommandColumn object causes validation when it posts back to the server.
Protected propertyViewStateGets the System.Web.UI.StateBag object that allows a column derived from the DataGridColumn class to store its properties. (Inherited from DataGridColumn.)
Public propertyVisibleGets or sets a value that indicates whether the column is visible in the DataGrid control. (Inherited from DataGridColumn.)
Top

  NameDescription
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeProvides the base implementation to reset a column derived from the DataGridColumn class to its initial state. (Inherited from DataGridColumn.)
Public methodInitializeCellInfrastructure. Initializes a cell within the column. (Overrides DataGridColumn.InitializeCell(TableCell, Int32, ListItemType).)
Protected methodLoadViewStateLoads the state of the DataGridColumn object. (Inherited from DataGridColumn.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnColumnChangedCalls the DataGridDesigner.OnColumnsChanged method. (Inherited from DataGridColumn.)
Protected methodSaveViewStateSaves the current state of the DataGridColumn object. (Inherited from DataGridColumn.)
Public methodToStringReturns the string representation of the column. (Inherited from DataGridColumn.)
Protected methodTrackViewStateCauses tracking of view-state changes to the server control so they can be stored in the server control's System.Web.UI.StateBag object. (Inherited from DataGridColumn.)
Top

  NameDescription
Explicit interface implemetationPrivate propertyIStateManager.IsTrackingViewStateInfrastructure. Gets a value that indicates whether the column is tracking view state changes. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.LoadViewStateInfrastructure. Loads previously saved state. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.SaveViewStateInfrastructure. Returns an object containing state changes. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.TrackViewStateInfrastructure. Starts tracking state changes. (Inherited from DataGridColumn.)
Top

Use the EditCommandColumn class to create a special column for the DataGrid control that contains the Edit, Update, and Cancel buttons for each data row in the grid. These buttons allow you to edit the values of a row in the DataGrid control.

If no row is selected, an Edit button displays in the EditCommandColumn object for each data row in the DataGrid control. When the Edit button for an item is clicked, the EditCommand event is raised and the Edit button is replaced with the Update and Cancel buttons. You need to provide code to handle the EditCommand event. A typical event handler sets the EditItemIndex property to the selected row, and then rebinds the data to the DataGrid control.

NoteNote

You must provide values for the CancelText, EditText, and UpdateText properties. Otherwise, the associated buttons will not appear in the EditCommandColumn.

The buttons in the EditCommandColumn can be set to display as hyperlinks or push buttons by setting the ButtonType property.

Clicking the Update or Cancel button raises the UpdateCommand or CancelCommand event, respectively. You need to provide code to handle these events.

A typical handler for the UpdateCommand event updates the data, sets the EditItemIndex property to -1 (to deselect the item), and then rebinds the data to the DataGrid control.

A typical handler for the CancelCommand event sets the EditItemIndex property to -1 (to deselect the item), and then rebinds the data to the DataGrid control.

Caution noteCaution

The EditCommandColumn object can be used to display user input, which might include malicious client script. Check any information that is sent from a client for executable script, SQL statements, or other code before displaying it in your application. You can use validation controls to verify user input before displaying the input text in a DataGrid control. ASP.NET provides an input request validation feature to block script and HTML in user input. For more information, see Securing Standard Controls, How to: Protect Against Script Exploits in a Web Application by Applying HTML Encoding to Strings, and Validating User Input in ASP.NET Web Pages.

By default, page validation is performed when an Update button in the EditCommandColumn control is clicked. Page validation determines whether the input controls that are associated with a validation control on the page all pass the validation rules that are specified by the validation control. To prevent page validation from occurring, set the CausesValidation property to false.

The following code example demonstrates how to add an EditCommandColumn object to a DataGrid control.


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

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft