Nyelv

EditCommandColumn Osztály

Definíció

A vezérlőelem speciális oszloptípusa DataGrid , amely az Edit egyes sorokban lévő adatelemek szerkesztésére szolgáló gombokat tartalmazza.

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
Öröklődés
EditCommandColumn

Példák

Az alábbi példakód bemutatja, hogyan adhat hozzá objektumot EditCommandColumn egy DataGrid vezérlőhöz.


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

Megjegyzések

EditCommandColumn Az osztály használatával hozzon létre egy speciális oszlopot a DataGrid vezérlőelemhez, amely a Editrács minden adatsorához tartalmazza a , Updateés Cancel gombokat. Ezek a gombok lehetővé teszik egy sor értékeinek szerkesztését a DataGrid vezérlőelemben.

Ha nincs kijelölve sor, Edit egy gomb jelenik meg a EditCommandColumn vezérlőelem minden adatsorának objektumában DataGrid . Amikor egy Edit elem gombjára kattint, az EditCommand esemény fel lesz emelve, és a Edit gombot lecseréli az és Update a Cancel gombokra. Meg kell adnia az esemény kezeléséhez EditCommand szükséges kódot. Egy tipikus eseménykezelő beállítja a EditItemIndex tulajdonságot a kijelölt sorra, majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.

Note

Meg kell adnia a , CancelTextés EditText a UpdateTexttulajdonságok értékeit. Ellenkező esetben a társított gombok nem jelennek meg a EditCommandColumn.

A tulajdonság beállításával beállíthatja, hogy a EditCommandColumn gombok hivatkozásként vagy leküldéses gombként jelenjenek meg ButtonType .

Ha a vagy Update a Cancel gombra kattint, az vagy az UpdateCommandCancelCommand eseményt emeli ki. Az események kezeléséhez kódot kell megadnia.

Az esemény egy tipikus kezelője UpdateCommand frissíti az adatokat, beállítja a EditItemIndex tulajdonságot -1 (az elem kijelölésének megszüntetéséhez), majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.

Az esemény egy tipikus kezelője CancelCommand beállítja a EditItemIndex tulajdonságot -1 (az elem kijelölésének megszüntetéséhez), majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.

Figyelmeztetés

Az EditCommandColumn objektum a felhasználói bemenetek megjelenítésére használható, amelyek rosszindulatú ügyfélszkripteket is tartalmazhatnak. Mielőtt megjelenítené az alkalmazásban, ellenőrizze az ügyféltől a végrehajtható szkriptekhez, SQL-utasításokhoz vagy más kódhoz küldött információkat. Érvényesítési vezérlőkkel ellenőrizheti a felhasználói bemenetet, mielőtt megjelenítené a beviteli szöveget egy DataGrid vezérlőben. ASP.NET a bemeneti kérések érvényesítési funkciójával letilthatja a szkriptet és a HTML-t a felhasználói bemenetben. További információ: A standard vezérlők, Hogyan: Védelem a szkriptek kihasználása ellen a webalkalmazásokban a HTML-kódolás sztringekre való alkalmazásával és Az ASP.NET weblapok felhasználói bemenetének ellenőrzése.

Alapértelmezés szerint az oldalérvényesítés akkor történik, ha a Update vezérlő egyik EditCommandColumn gombjára kattint. Az oldalérvényesítés határozza meg, hogy az oldalon egy érvényesítési vezérlőhöz társított beviteli vezérlők mindegyike megfelel-e az érvényesítési vezérlő által megadott érvényesítési szabályoknak. Ha meg szeretné akadályozni az oldalérvényesítést, állítsa a tulajdonságot a CausesValidation következőre false: .

Konstruktorok

Name Description
EditCommandColumn()

Inicializálja a EditCommandColumn osztály új példányát.

Tulajdonságok

Name Description
ButtonType

Lekéri vagy beállítja az oszlop gombtípusát.

CancelText

Lekéri vagy beállítja a parancsgombhoz megjelenítendő Cancel szöveget a EditCommandColumn.

CausesValidation

Lekéri vagy beállít egy értéket, amely jelzi, hogy az ellenőrzés akkor történik-e, amikor az Update objektum egyik EditCommandColumn gombjára kattint.

DesignMode

Olyan értéket kap, amely jelzi, hogy az oszlop tervező módban van-e.

(Öröklődés forrása DataGridColumn)
EditText

Lekéri vagy beállítja a gombhoz megjelenítendő szöveget a EditEditCommandColumn.

FooterStyle

Lekéri az oszlop láblécszakaszának stílustulajdonságait.

(Öröklődés forrása DataGridColumn)
FooterText

Lekéri vagy beállítja az oszlop láblécszakaszában megjelenő szöveget.

(Öröklődés forrása DataGridColumn)
HeaderImageUrl

Lekéri vagy beállítja egy kép helyét, hogy megjelenjen az oszlop fejlécszakaszában.

(Öröklődés forrása DataGridColumn)
HeaderStyle

Lekéri az oszlop fejlécszakaszának stílustulajdonságait.

(Öröklődés forrása DataGridColumn)
HeaderText

Lekéri vagy beállítja az oszlop fejlécszakaszában megjelenő szöveget.

(Öröklődés forrása DataGridColumn)
IsTrackingViewState

Olyan értéket kap, amely meghatározza, hogy az DataGridColumn objektum meg van-e jelölve az állapot mentéséhez.

(Öröklődés forrása DataGridColumn)
ItemStyle

Lekéri az oszlop elemcelláinak stílustulajdonságait.

(Öröklődés forrása DataGridColumn)
Owner

Lekéri azt a DataGrid vezérlőt, amelynek az oszlop tagja.

(Öröklődés forrása DataGridColumn)
SortExpression

Lekéri vagy beállítja annak a mezőnek vagy kifejezésnek a nevét, amely a rendezéshez kijelölt oszlopot adja át a OnSortCommand(DataGridSortCommandEventArgs) metódusnak.

(Öröklődés forrása DataGridColumn)
UpdateText

Lekéri vagy beállítja a parancsgombhoz megjelenítendő Update szöveget a EditCommandColumn.

ValidationGroup

Lekéri vagy beállítja azoknak az érvényesítési vezérlőknek a csoportját, amelyek esetében az EditCommandColumn objektum érvényesítést okoz, amikor visszakerül a kiszolgálóra.

ViewState

Lekéri azt az StateBag objektumot, amely lehetővé teszi, hogy az DataGridColumn osztályból származó oszlop tárolja a tulajdonságait.

(Öröklődés forrása DataGridColumn)
Visible

Lekéri vagy beállít egy értéket, amely jelzi, hogy az oszlop látható-e a DataGrid vezérlőben.

(Öröklődés forrása DataGridColumn)

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
Initialize()

Az alap implementációt biztosítja az osztályból DataGridColumn származó oszlop kezdeti állapotba állításához.

(Öröklődés forrása DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Inicializál egy cellát az oszlopban.

LoadViewState(Object)

Betölti DataGridColumn az objektum állapotát.

(Öröklődés forrása DataGridColumn)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnColumnChanged()

Meghívja a OnColumnsChanged() metódust.

(Öröklődés forrása DataGridColumn)
SaveViewState()

Menti az objektum aktuális állapotát DataGridColumn .

(Öröklődés forrása DataGridColumn)
ToString()

Az oszlop sztring-ábrázolását adja vissza.

(Öröklődés forrása DataGridColumn)
TrackViewState()

A kiszolgálóvezérlő nézetállapot-változásainak nyomon követését okozza, hogy azok a kiszolgálóvezérlő StateBag objektumában tárolhatók legyenek.

(Öröklődés forrása DataGridColumn)

Explicit interfész-implementációk

Name Description
IStateManager.IsTrackingViewState

Olyan értéket kap, amely jelzi, hogy az oszlop nyomon követi-e a nézet állapotának változásait.

(Öröklődés forrása DataGridColumn)
IStateManager.LoadViewState(Object)

Betölti a korábban mentett állapotot.

(Öröklődés forrása DataGridColumn)
IStateManager.SaveViewState()

Állapotváltozásokat tartalmazó objektumot ad vissza.

(Öröklődés forrása DataGridColumn)
IStateManager.TrackViewState()

Megkezdi az állapotváltozások nyomon követését.

(Öröklődés forrása DataGridColumn)

A következőre érvényes:

Lásd még