다음을 통해 공유


EditCommandColumn 클래스

정의

각 행에 데이터 항목 편집용 Edit 단추를 포함하는 DataGrid 컨트롤에 대한 특별한 열 형식입니다.

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
상속
EditCommandColumn

예제

다음 코드 예제에 추가 하는 방법을 보여 줍니다.는 EditCommandColumn 개체는 DataGrid 제어 합니다.


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

설명

사용 하 여는 EditCommandColumn 클래스에 대 한 특별 한 열을 만들 수는 DataGrid 포함 된 컨트롤을 Edit, Update, 및 Cancel 표의 각 데이터 행에 대 한 단추. 이러한 단추에 있는 행의 값을 편집할 수는 DataGrid 제어 합니다.

행을 선택 하면를 Edit 단추에 표시 합니다 EditCommandColumn 의 각 데이터 행에 대 한 개체는 DataGrid 컨트롤. 경우는 Edit 단추를 클릭 하면 항목에 대 한는 EditCommand 이벤트가 발생 및 Edit 단추 바뀝니다 합니다 UpdateCancel 단추. 처리 하는 코드를 제공 해야 합니다 EditCommand 이벤트입니다. 일반적인 이벤트 처리기를 설정 합니다 EditItemIndex 속성 선택된 된 행을 다음 데이터를 다시 바인딩합니다는 DataGrid 제어 합니다.

참고

에 대 한 값을 제공 해야 합니다 CancelText, EditText, 및 UpdateText 속성입니다. 그렇지 않은 경우 관련된 된 단추에 표시 되지 것입니다는 EditCommandColumn합니다.

단추를 EditCommandColumn 설정 하 여 하이퍼링크 또는 푸시 단추 표시로 설정할 수 있습니다는 ButtonType 속성입니다.

클릭 하는 Update 또는 Cancel 발생 시키는 단추를 UpdateCommand 또는 CancelCommand 이벤트, 각각. 이러한 이벤트를 처리 하는 코드를 제공 해야 합니다.

에 대 한 일반적인 처리기는 UpdateCommand 데이터 집합을 업데이트 하는 이벤트를 EditItemIndex 속성을 -1 (항목을 선택 취소)를, 다음 데이터를 다시 바인딩합니다는 DataGrid 컨트롤입니다.

에 대 한 일반적인 처리기는 CancelCommand 이벤트 집합을 EditItemIndex 속성을 -1 (항목을 선택 취소)를, 다음 데이터를 다시 바인딩합니다를 DataGrid 컨트롤입니다.

주의

EditCommandColumn 악성 클라이언트 스크립트 포함 될 수 있는 사용자 입력을 표시할 개체를 사용할 수 있습니다. 애플리케이션에서 표시 하기 전에 실행 스크립트, SQL 문 또는 다른 코드에 대 한 클라이언트에서 전송 되는 모든 정보를 확인 합니다. 입력된 텍스트를 표시 하기 전에 사용자 입력을 확인 하려면 유효성 검사 컨트롤을 사용할 수는 DataGrid 제어 합니다. ASP.NET에서는 사용자 입력에서 차단 스크립트를 HTML 입력된 요청 유효성 검사 기능을 제공 합니다. 자세한 내용은 표준 컨트롤 보호, 방법: 보호에 대 한 스크립트 악용 문자열을 HTML 인코딩 적용 하 여 웹 애플리케이션에서, 및 에서 사용자 입력 유효성 검사 ASP.NET 웹 페이지합니다.

기본적으로 페이지 유효성 검사는 컨트롤의 UpdateEditCommandColumn 단추를 클릭할 때 수행됩니다. 페이지 유효성 검사는 유효성 검사 컨트롤에 의해 지정 된 유효성 검사 규칙을 통과 모든 페이지의 유효성 검사와 연관 된 입력된 컨트롤을 제어 하는지 여부를 결정 합니다. 페이지 유효성 검사가 발생을 방지 하려면 설정 합니다 CausesValidation 속성을 false입니다.

생성자

EditCommandColumn()

EditCommandColumn 클래스의 새 인스턴스를 초기화합니다.

속성

ButtonType

열에 대한 단추 형식을 가져오거나 설정합니다.

CancelText

EditCommandColumn에 있는 Cancel 명령 단추에 표시할 텍스트를 가져오거나 설정합니다.

CausesValidation

EditCommandColumn 개체의 Update 단추를 클릭할 때 유효성 검사가 수행되는지 여부를 나타내는 값을 가져오거나 설정합니다.

DesignMode

열이 디자인 모드인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
EditText

EditCommandColumn에 있는 Edit 단추에 표시할 텍스트를 가져오거나 설정합니다.

FooterStyle

열의 바닥글 구역에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
FooterText

열의 바닥글 구역에 표시할 텍스트를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
HeaderImageUrl

열의 머리글 구역에 표시할 이미지의 위치를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
HeaderStyle

열의 머리글 구역에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
HeaderText

열의 머리글 구역에 표시할 텍스트를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
IsTrackingViewState

DataGridColumn 개체가 상태를 저장하도록 표시되었는지 여부를 확인하는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
ItemStyle

열의 항목 셀에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
Owner

열을 멤버로 갖는 DataGrid 컨트롤을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
SortExpression

정렬할 열을 선택한 경우 OnSortCommand(DataGridSortCommandEventArgs) 메서드에 전달할 필드 또는 식 이름을 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
UpdateText

EditCommandColumn에 있는 Update 명령 단추에 표시할 텍스트를 가져오거나 설정합니다.

ValidationGroup

서버에 다시 게시될 때 EditCommandColumn 개체가 유효성 검사를 수행할 유효성 검사 컨트롤 그룹을 가져오거나 설정합니다.

ViewState

StateBag 클래스에서 파생된 열이 자신의 속성을 저장할 수 있게 하는 DataGridColumn 개체를 가져옵니다.

(다음에서 상속됨 DataGridColumn)
Visible

DataGrid 컨트롤에서 열을 볼 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Initialize()

DataGridColumn 클래스에서 파생된 열을 초기 상태로 다시 설정하는 기본 구현을 제공합니다.

(다음에서 상속됨 DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

열 내의 셀을 초기화합니다.

LoadViewState(Object)

DataGridColumn 개체의 상태를 로드합니다.

(다음에서 상속됨 DataGridColumn)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnColumnChanged()

OnColumnsChanged() 메서드를 호출합니다.

(다음에서 상속됨 DataGridColumn)
SaveViewState()

DataGridColumn 개체의 현재 상태를 저장합니다.

(다음에서 상속됨 DataGridColumn)
ToString()

열의 문자열 표현을 반환합니다.

(다음에서 상속됨 DataGridColumn)
TrackViewState()

서버 컨트롤의 뷰 상태 변경 사항 추적 작업을 실행하여 서버 컨트롤의 StateBag 개체에 변경 사항이 저장되도록 합니다.

(다음에서 상속됨 DataGridColumn)

명시적 인터페이스 구현

IStateManager.IsTrackingViewState

열에서 뷰 상태 변경 내용을 추적하는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.LoadViewState(Object)

이전에 저장된 상태를 로드합니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.SaveViewState()

상태 변경 사항이 포함된 개체를 반환합니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.TrackViewState()

상태 변경 사항 추적을 시작합니다.

(다음에서 상속됨 DataGridColumn)

적용 대상

추가 정보