Sdílet prostřednictvím


EditCommandColumn Třída

Definice

Speciální typ sloupce pro DataGrid ovládací prvek, který obsahuje Edit tlačítka pro úpravy datových položek v každém řádku.

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
Dědičnost
EditCommandColumn

Příklady

Následující příklad kódu ukazuje, jak přidat EditCommandColumn objekt do DataGrid ovládacího prvku.


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

Poznámky

EditCommandColumn Pomocí třídy vytvořte speciální sloupec pro DataGrid ovládací prvek, který obsahuje Edittlačítka , Updatea Cancel pro každý řádek dat v mřížce. Tato tlačítka umožňují upravit hodnoty řádku v ovládacím DataGrid prvku.

Pokud není vybraný žádný řádek, Edit zobrazí se v objektu EditCommandColumn pro každý řádek dat v ovládacím DataGrid prvku tlačítko. Když kliknete na Edit tlačítko pro položku, EditCommand vyvolá se událost a Edit tlačítko se nahradí Update tlačítky a Cancel . Musíte zadat kód pro zpracování EditCommand události. Typická obslužná rutina události nastaví EditItemIndex vlastnost na vybraný řádek a potom znovu připouná data k ovládacímu DataGrid prvku.

Poznámka

Je nutné zadat hodnoty pro CancelTextvlastnosti , EditTexta UpdateText . Jinak se přidružená tlačítka nezobrazí v EditCommandColumnsouboru .

Tlačítka v objektu EditCommandColumn lze nastavit tak, aby se zobrazovala jako hypertextové odkazy nebo tlačítka tlačítek nastavením ButtonType vlastnosti.

Kliknutím na Update tlačítko nebo Cancel se událost nebo CancelCommand vyvoláUpdateCommand. Pro zpracování těchto událostí potřebujete zadat kód.

Typická obslužná rutina události UpdateCommand aktualizuje data, nastaví EditItemIndex vlastnost na -1 (pro zrušení výběru položky) a potom znovu připouná data k ovládacímu DataGrid prvku.

Typická obslužná rutina události CancelCommand nastaví vlastnost na -1 (pro zrušení výběru položky) a pak znovu připoutná data k ovládacímu DataGridEditItemIndex prvku.

Upozornění

Objekt EditCommandColumn lze použít k zobrazení vstupu uživatele, který může zahrnovat škodlivý klientský skript. Než ho zobrazíte v aplikaci, zkontrolujte všechny informace odesílané klientem kvůli spustitelnému skriptu, příkazům SQL nebo jinému kódu. Ověřovací ovládací prvky můžete použít k ověření vstupu uživatele před zobrazením vstupního textu v ovládacím DataGrid prvku. ASP.NET poskytuje funkci ověření vstupní žádosti, která blokuje skript a html v uživatelském vstupu. Další informace najdete v tématech Zabezpečení standardních ovládacích prvků, Postupy: Ochrana před zneužitím skriptů ve webové aplikaci použitím kódování HTML u řetězců a Ověřování vstupu uživatele na webových stránkách ASP.NET.

Ve výchozím nastavení se ověření stránky provádí po Update kliknutí na tlačítko v ovládacím EditCommandColumn prvku. Ověření stránky určuje, jestli vstupní ovládací prvky, které jsou přidružené k ovládacímu prvku ověření na stránce, všechny projdou ověřovacími pravidly určenými ověřovacím ovládacím prvku. Pokud chcete zabránit ověření stránky, nastavte CausesValidation vlastnost na false.

Konstruktory

EditCommandColumn()

Inicializuje novou instanci EditCommandColumn třídy.

Vlastnosti

ButtonType

Získá nebo nastaví typ tlačítka pro sloupec.

CancelText

Získá nebo nastaví text, který se má zobrazit pro Cancel příkazové tlačítko v EditCommandColumn.

CausesValidation

Získá nebo nastaví hodnotu označující, zda se provádí ověření při Update kliknutí na tlačítko v objektu EditCommandColumn .

DesignMode

Získá hodnotu, která označuje, zda je sloupec v režimu návrhu.

(Zděděno od DataGridColumn)
EditText

Získá nebo nastaví text, který se má zobrazit pro Edit tlačítko v EditCommandColumn.

FooterStyle

Získá vlastnosti stylu pro část zápatí sloupce.

(Zděděno od DataGridColumn)
FooterText

Získá nebo nastaví text zobrazený v části zápatí sloupce.

(Zděděno od DataGridColumn)
HeaderImageUrl

Získá nebo nastaví umístění obrázku, který se zobrazí v záhlaví oddílu sloupce.

(Zděděno od DataGridColumn)
HeaderStyle

Získá vlastnosti stylu pro záhlaví oddíl sloupce.

(Zděděno od DataGridColumn)
HeaderText

Získá nebo nastaví text zobrazený v záhlaví oddílu sloupce.

(Zděděno od DataGridColumn)
IsTrackingViewState

Získá hodnotu, která určuje, zda DataGridColumn objekt je označen k uložení jeho stavu.

(Zděděno od DataGridColumn)
ItemStyle

Získá vlastnosti stylu pro buňky položky sloupce.

(Zděděno od DataGridColumn)
Owner

DataGrid Získá ovládací prvek, který sloupec je členem.

(Zděděno od DataGridColumn)
SortExpression

Získá nebo nastaví název pole nebo výrazu, který OnSortCommand(DataGridSortCommandEventArgs) se má předat metodě při výběru sloupce pro řazení.

(Zděděno od DataGridColumn)
UpdateText

Získá nebo nastaví text, který se má zobrazit pro Update příkazové tlačítko v EditCommandColumn.

ValidationGroup

Získá nebo nastaví skupinu ovládacích prvků ověření, pro které EditCommandColumn objekt způsobí ověření při odeslání zpět na server.

ViewState

StateBag Získá objekt, který umožňuje sloupec odvozený z DataGridColumn třídy uložit jeho vlastnosti.

(Zděděno od DataGridColumn)
Visible

Získá nebo nastaví hodnotu, která označuje, zda je sloupec viditelný v ovládacím DataGrid prvku.

(Zděděno od DataGridColumn)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
Initialize()

Poskytuje základní implementaci pro resetování sloupce odvozeného DataGridColumn z třídy do jeho počátečního stavu.

(Zděděno od DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Inicializuje buňku ve sloupci.

LoadViewState(Object)

Načte stav objektu DataGridColumn .

(Zděděno od DataGridColumn)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnColumnChanged()

Zavolá metodu OnColumnsChanged() .

(Zděděno od DataGridColumn)
SaveViewState()

Uloží aktuální stav objektu DataGridColumn .

(Zděděno od DataGridColumn)
ToString()

Vrátí řetězcovou reprezentaci sloupce.

(Zděděno od DataGridColumn)
TrackViewState()

Způsobí sledování změn stavu zobrazení serverového ovládacího prvku, aby mohly být uloženy v objektu ovládacího prvku StateBag serveru.

(Zděděno od DataGridColumn)

Explicitní implementace rozhraní

IStateManager.IsTrackingViewState

Získá hodnotu, která označuje, zda sloupec sledování změny stavu zobrazení.

(Zděděno od DataGridColumn)
IStateManager.LoadViewState(Object)

Načte dříve uložený stav.

(Zděděno od DataGridColumn)
IStateManager.SaveViewState()

Vrátí objekt obsahující změny stavu.

(Zděděno od DataGridColumn)
IStateManager.TrackViewState()

Spustí sledování změn stavu.

(Zděděno od DataGridColumn)

Platí pro

Viz také