EditCommandColumn Klas

Definitie

Een speciaal kolomtype voor het DataGrid besturingselement met de knoppen voor het Edit bewerken van gegevensitems in elke rij.

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

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een EditCommandColumn object toevoegt aan een DataGrid besturingselement.


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

Opmerkingen

Gebruik de EditCommandColumn klasse om een speciale kolom te maken voor het DataGrid besturingselement met de Edit, Updateen Cancel knoppen voor elke gegevensrij in het raster. Met deze knoppen kunt u de waarden van een rij in het DataGrid besturingselement bewerken.

Als er geen rij is geselecteerd, wordt er een Edit knop weergegeven in het EditCommandColumn object voor elke gegevensrij in het DataGrid besturingselement. Wanneer op de Edit knop voor een item wordt geklikt, wordt de EditCommand gebeurtenis gegenereerd en wordt de Edit knop vervangen door de Update knoppen.Cancel U moet code opgeven om de EditCommand gebeurtenis af te handelen. Een typische gebeurtenishandler stelt de eigenschap in op EditItemIndex de geselecteerde rij en plaatst de gegevens vervolgens opnieuw in het DataGrid besturingselement.

Note

U moet waarden opgeven voor de CancelText, EditTexten UpdateText eigenschappen. Anders worden de bijbehorende knoppen niet weergegeven in de EditCommandColumn.

De knoppen in de EditCommandColumn knop kunnen worden ingesteld om weer te geven als hyperlinks of drukknoppen door de ButtonType eigenschap in te stellen.

Als u op de Update knop Cancel klikt, wordt respectievelijk de UpdateCommand of CancelCommand gebeurtenis gegenereerd. U moet code opgeven om deze gebeurtenissen af te handelen.

Een typische handler voor de UpdateCommand gebeurtenis werkt de gegevens bij, stelt de EditItemIndex eigenschap -1 in op (om het item te deselecteren) en koppelt de gegevens vervolgens opnieuw aan het DataGrid besturingselement.

Een typische handler voor de CancelCommand gebeurtenis stelt de EditItemIndex eigenschap -1 in (om het item te deselecteren) en koppelt de gegevens vervolgens opnieuw aan het DataGrid besturingselement.

Caution

Het EditCommandColumn object kan worden gebruikt om gebruikersinvoer weer te geven, waaronder mogelijk schadelijk clientscript. Controleer alle informatie die wordt verzonden vanaf een client voor uitvoerbaar script, SQL-instructies of andere code voordat u deze in uw toepassing weergeeft. U kunt validatiebesturingselementen gebruiken om gebruikersinvoer te controleren voordat u de invoertekst in een DataGrid besturingselement weergeeft. ASP.NET biedt een validatiefunctie voor invoeraanvragen voor het blokkeren van scripts en HTML in gebruikersinvoer. Zie 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 voor meer informatie.

Paginavalidatie wordt standaard uitgevoerd wanneer op een Update knop in het EditCommandColumn besturingselement wordt geklikt. Paginavalidatie bepaalt of de invoerbesturingselementen die zijn gekoppeld aan een validatiebesturingselement op de pagina, alle validatieregels doorstaan die door het validatiebesturingselement worden opgegeven. Als u wilt voorkomen dat paginavalidatie plaatsvindt, stelt u de CausesValidation eigenschap in op false.

Constructors

Name Description
EditCommandColumn()

Initialiseert een nieuw exemplaar van de EditCommandColumn klasse.

Eigenschappen

Name Description
ButtonType

Hiermee haalt u het knoptype voor de kolom op of stelt u dit in.

CancelText

Hiermee haalt u de tekst op die moet worden weergegeven voor de Cancel opdrachtknop in de EditCommandColumn.

CausesValidation

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de validatie wordt uitgevoerd wanneer op een Update knop in het EditCommandColumn object wordt geklikt.

DesignMode

Hiermee wordt een waarde opgehaald die aangeeft of de kolom zich in de ontwerpmodus bevindt.

(Overgenomen van DataGridColumn)
EditText

Hiermee haalt u de tekst op die voor de Edit knop in de knop wordt weergegeven of stelt u deze EditCommandColumnin.

FooterStyle

Hiermee haalt u de stijleigenschappen voor de voettekstsectie van de kolom op.

(Overgenomen van DataGridColumn)
FooterText

Hiermee wordt de tekst opgehaald of ingesteld die wordt weergegeven in de voettekstsectie van de kolom.

(Overgenomen van DataGridColumn)
HeaderImageUrl

Hiermee wordt de locatie van een afbeelding opgehaald of ingesteld om weer te geven in de koptekstsectie van de kolom.

(Overgenomen van DataGridColumn)
HeaderStyle

Hiermee haalt u de stijleigenschappen voor de koptekstsectie van de kolom op.

(Overgenomen van DataGridColumn)
HeaderText

Hiermee wordt de tekst opgehaald of ingesteld die wordt weergegeven in de koptekstsectie van de kolom.

(Overgenomen van DataGridColumn)
IsTrackingViewState

Hiermee wordt een waarde opgehaald die bepaalt of het object is gemarkeerd om de DataGridColumn status op te slaan.

(Overgenomen van DataGridColumn)
ItemStyle

Hiermee haalt u de stijleigenschappen voor de itemcellen van de kolom op.

(Overgenomen van DataGridColumn)
Owner

Hiermee haalt u het DataGrid besturingselement op waarvan de kolom lid is.

(Overgenomen van DataGridColumn)
SortExpression

Hiermee haalt u de naam van het veld of de expressie op die moet worden doorgegeven aan de OnSortCommand(DataGridSortCommandEventArgs) methode wanneer een kolom is geselecteerd voor sorteren.

(Overgenomen van DataGridColumn)
UpdateText

Hiermee haalt u de tekst op die moet worden weergegeven voor de Update opdrachtknop in de EditCommandColumn.

ValidationGroup

Hiermee wordt de groep validatiebesturingselementen opgehaald of ingesteld waarvoor het object validatie veroorzaakt wanneer het EditCommandColumn object wordt teruggezet naar de server.

ViewState

Hiermee haalt u het StateBag object op waarmee een kolom die is afgeleid van de DataGridColumn klasse, de eigenschappen ervan kan opslaan.

(Overgenomen van DataGridColumn)
Visible

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de kolom zichtbaar is in het DataGrid besturingselement.

(Overgenomen van DataGridColumn)

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
Initialize()

Biedt de basis-implementatie voor het opnieuw instellen van een kolom die is afgeleid van de klasse in de DataGridColumn oorspronkelijke status.

(Overgenomen van DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Initialiseert een cel in de kolom.

LoadViewState(Object)

Laadt de status van het DataGridColumn object.

(Overgenomen van DataGridColumn)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnColumnChanged()

Roept de OnColumnsChanged() methode aan.

(Overgenomen van DataGridColumn)
SaveViewState()

Hiermee wordt de huidige status van het DataGridColumn object opgeslagen.

(Overgenomen van DataGridColumn)
ToString()

Retourneert de tekenreeksweergave van de kolom.

(Overgenomen van DataGridColumn)
TrackViewState()

Veroorzaakt het bijhouden van wijzigingen in de weergavestatus in het serverbesturingselement, zodat deze kunnen worden opgeslagen in het object van StateBag het serverbesturingselement.

(Overgenomen van DataGridColumn)

Expliciete interface-implementaties

Name Description
IStateManager.IsTrackingViewState

Hiermee wordt een waarde opgehaald die aangeeft of de kolom de status van de weergave bijhoudt.

(Overgenomen van DataGridColumn)
IStateManager.LoadViewState(Object)

Laadt eerder opgeslagen status.

(Overgenomen van DataGridColumn)
IStateManager.SaveViewState()

Retourneert een object met statuswijzigingen.

(Overgenomen van DataGridColumn)
IStateManager.TrackViewState()

Hiermee worden statuswijzigingen bijgehouden.

(Overgenomen van DataGridColumn)

Van toepassing op

Zie ook