다음을 통해 공유


DataGrid.EditItemIndex 속성

정의

편집할 DataGrid 컨트롤에 있는 항목의 인덱스를 가져오거나 설정합니다.

public:
 virtual property int EditItemIndex { int get(); void set(int value); };
public virtual int EditItemIndex { get; set; }
member this.EditItemIndex : int with get, set
Public Overridable Property EditItemIndex As Integer

속성 값

Int32

편집할 DataGrid 컨트롤에 있는 항목의 인덱스입니다. 기본값은 -1로, DataGrid 컨트롤에 편집하고 있는 항목이 없음을 나타냅니다.

예외

지정된 인덱스가 -1보다 작은 경우

예제

다음 코드 예제를 사용 하는 방법에 설명 합니다 EditItemIndex 속성에서 편집을 위해 선택한 항목을 확인 하는 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 language="C#" runat="server">
 
      DataTable Cart = new DataTable();
      DataView CartView;   
 
      void Page_Load(Object sender, EventArgs e) 
      {
         DataRow dr;
  
         if (Session["ShoppingCart"] == null) 
         {       
 
            Cart.Columns.Add(new DataColumn("Qty", typeof(String)));
            Cart.Columns.Add(new DataColumn("Item", typeof(String)));
            Cart.Columns.Add(new DataColumn("Price", typeof(String)));
            Session["ShoppingCart"] = Cart;
             
            // Create sample data.
            for (int i = 1; i <= 4; 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)).ToString();
               Cart.Rows.Add(dr);
            }
         } 
         else
            Cart = (DataTable)Session["ShoppingCart"];          
 
         CartView = new DataView(Cart);
         CartView.Sort="Item";
 
         if (!IsPostBack)
            BindGrid(); 
                   
      }
 
      void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
      {
         MyDataGrid.EditItemIndex = e.Item.ItemIndex;
         BindGrid();
      }
 
      void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
      {
         MyDataGrid.EditItemIndex = -1;
         BindGrid();
      }
 
      void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
      {
         // For bound columns, the edited value is stored in a TextBox.
         // The TextBox is the 0th element in the column's cell.
         TextBox qtyText = (TextBox)e.Item.Cells[2].Controls[0];
         TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];
 
         String item = e.Item.Cells[1].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 old entry.
         CartView.RowFilter = "Item='" + item + "'";
         if (CartView.Count > 0)
            CartView.Delete(0);
         CartView.RowFilter = "";
 
         // Add new entry.
         dr = Cart.NewRow();
         dr[0] = qty;
         dr[1] = item;
         dr[2] = price;
         Cart.Rows.Add(dr);
 
         MyDataGrid.EditItemIndex = -1;
         BindGrid();
      }
 
      void BindGrid() 
      {
         MyDataGrid.DataSource = CartView;
         MyDataGrid.DataBind();
      }
 
   </script>
 
<head runat="server">
    <title>DataGrid Editing Example</title>
</head>
<body style="font: 10pt verdana">
 
   <form id="form1" runat="server">

      <h3>DataGrid Editing Example</h3>
 
      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnEditCommand="MyDataGrid_Edit"
           OnCancelCommand="MyDataGrid_Cancel"
           OnUpdateCommand="MyDataGrid_Update"
           AutoGenerateColumns="false">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>
 
         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update" 
                 HeaderText="Edit Command Column">

               <ItemStyle Wrap="false">
               </ItemStyle>

               <HeaderStyle Wrap="false">
               </HeaderStyle>

            </asp:EditCommandColumn>            
 
            <asp:BoundColumn HeaderText="Item" 
                 ReadOnly="true" 
                 DataField="Item"/>
 
            <asp:BoundColumn HeaderText="Quantity" 
                 DataField="Qty"/>
 
            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>
 
         </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 language="VB" runat="server">
 
    Dim Cart As New DataTable
    Dim CartView As DataView
    Sub Page_Load(sender As Object, e As EventArgs)
        Dim dr As DataRow
        
        If Session("ShoppingCart") Is Nothing Then
            
            Cart.Columns.Add(New DataColumn("Qty", GetType(String)))
            Cart.Columns.Add(New DataColumn("Item", GetType(String)))
            Cart.Columns.Add(New DataColumn("Price", GetType(String)))
            Session("ShoppingCart") = Cart
            
            ' Create sample data.
            Dim i As Integer
            For i = 1 To 4
                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)).ToString()
                Cart.Rows.Add(dr)
            Next i
        Else
            Cart = CType(Session("ShoppingCart"), DataTable)
        End If 
        CartView = New DataView(Cart)
        CartView.Sort = "Item"
        
        If Not IsPostBack Then
            BindGrid()
        End If 
    End Sub 'Page_Load


    Sub MyDataGrid_Edit(sender As Object, e As DataGridCommandEventArgs)
        MyDataGrid.EditItemIndex = e.Item.ItemIndex
        BindGrid()
    End Sub 'MyDataGrid_Edit


    Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
        MyDataGrid.EditItemIndex = - 1
        BindGrid()
    End Sub 'MyDataGrid_Cancel


    Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
        ' For bound columns, the edited value is stored in a TextBox.
        ' The TextBox is the 0th element in the column's cell.
        Dim qtyText As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
        Dim priceText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
        
        Dim item As String = e.Item.Cells(1).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.
        CartView.RowFilter = "Item='" & item & "'"
        If CartView.Count > 0 Then
            CartView.Delete(0)
        End If
        CartView.RowFilter = ""
        
        ' Add new entry.
        dr = Cart.NewRow()
        dr(0) = qty
        dr(1) = item
        dr(2) = price
        Cart.Rows.Add(dr)
        
        MyDataGrid.EditItemIndex = - 1
        BindGrid()
    End Sub 'MyDataGrid_Update


    Sub BindGrid()
        MyDataGrid.DataSource = CartView
        MyDataGrid.DataBind()
    End Sub 'BindGrid
 
   </script>
 
<head runat="server">
    <title>DataGrid Editing Example</title>
</head>
<body style="font: 10pt verdana">
 
   <form id="form1" runat="server">

      <h3>DataGrid Editing Example</h3>
 
      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnEditCommand="MyDataGrid_Edit"
           OnCancelCommand="MyDataGrid_Cancel"
           OnUpdateCommand="MyDataGrid_Update"
           AutoGenerateColumns="false">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>
 
         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update" 
                 HeaderText="Edit Command Column">

               <ItemStyle Wrap="false">
               </ItemStyle>

               <HeaderStyle Wrap="false">
               </HeaderStyle>

            </asp:EditCommandColumn>            
 
            <asp:BoundColumn HeaderText="Item" 
                 ReadOnly="true" 
                 DataField="Item"/>
 
            <asp:BoundColumn HeaderText="Quantity" 
                 DataField="Qty"/>
 
            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>
 
         </Columns>
 
      </asp:DataGrid>

   </form>
 
</body>
</html>

설명

사용 하 여는 EditItemIndex 속성 때를 DataGrid 컨트롤에 포함는 EditCommandColumn 에서 선택한 항목의 인덱스를 확인 하는 DataGrid 편집 컨트롤입니다.

이 속성은 프로그래밍 방식으로 편집 되 고 있는 항목을 제어 하도 사용 됩니다. 에 있는 항목의 인덱스에이 속성을 설정 합니다 DataGrid 컨트롤에서 해당 항목에 대 한 편집 컨트롤을 통해는 EditCommandColumn합니다.

참고

EditItemIndex 속성은 0부터 시작 합니다.

편집을 취소 하려면 프로그래밍 방식으로-1로이 속성을 설정 합니다.

주의

텍스트에 표시 되기 전에 HTML 인코딩해야 아닙니다는 DataGrid 제어 합니다. 이 텍스트에 HTML 태그 내에서 스크립트를 포함할 수 있습니다. 컨트롤에 대 한 값은 사용자 입력 으로부터 가져올, 경우에 보안 취약점을 줄이는 값을 확인 해야 합니다.

적용 대상

추가 정보