Freigeben über


DataGrid.EditItemIndex-Eigenschaft

Ruft den Index eines Elements im zu bearbeitenden DataGrid-Steuerelement ab oder legt diesen fest.

Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
Public Overridable Property EditItemIndex As Integer
'Usage
Dim instance As DataGrid
Dim value As Integer

value = instance.EditItemIndex

instance.EditItemIndex = value
public virtual int EditItemIndex { get; set; }
public:
virtual property int EditItemIndex {
    int get ();
    void set (int value);
}
/** @property */
public int get_EditItemIndex ()

/** @property */
public void set_EditItemIndex (int value)
public function get EditItemIndex () : int

public function set EditItemIndex (value : int)

Eigenschaftenwert

Der Index eines Elements im zu bearbeitenden DataGrid-Steuerelement. Der Standardwert ist -1. Dadurch wird angezeigt, dass kein Element im DataGrid-Steuerelement bearbeitet wird.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentOutOfRangeException

Der angegebene Index ist kleiner als -1.

Hinweise

Wenn das DataGrid-Steuerelement eine EditCommandColumn enthält, kann mit der EditItemIndex-Eigenschaft der Index des Elements bestimmt werden, das im zu bearbeitenden DataGrid-Steuerelement ausgewählt ist.

Mit dieser Eigenschaft wird außerdem programmgesteuert bestimmt, welches Element bearbeitet wird. Wenn diese Eigenschaft auf den Index eines Elements im DataGrid-Steuerelement festgelegt wird, wird die Bearbeitung von Steuerelementen für dieses Element in EditCommandColumn aktiviert.

Hinweis

Die EditItemIndex-Eigenschaft ist nullbasiert.

Zum Abbrechen der Bearbeitung legen Sie diese Eigenschaft programmgesteuert auf -1 fest.

Warnung

Text wird erst HTML-codiert, wenn er im DataGrid-Steuerelement angezeigt wird. Auf diese Weise können Skripts in HTML-Tags im Text eingebettet werden. Wenn die Werte in diesem Steuerelement aus Benutzereingaben stammen, müssen Sie die Werte zur Reduzierung von Sicherheitsrisiken validieren.

Beispiel

Das folgende Codebeispiel veranschaulicht, wie mit der EditItemIndex-Eigenschaft das im DataGrid-Steuerelement für die Bearbeitung ausgewählte Element bestimmt wird.

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <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>
 
<body style="font: 10pt verdana">
 
   <form runat="server">

      <h3>DataGrid Editing Example</h3>
 
      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           Font-Name="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="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <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>
 
<body style="font: 10pt verdana">
 
   <form runat="server">

      <h3>DataGrid Editing Example</h3>
 
      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           Font-Name="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="JScript" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script language="JScript" runat="server">
 
      var Cart : DataTable = new DataTable();
      var CartView : DataView;   
 
      function Page_Load(sender, e : EventArgs) 
      {
         var dr : DataRow;
 
         if (Session["ShoppingCart"] == null) 
         {       
            Cart.Columns.Add(new DataColumn("Qty", System.String));
            Cart.Columns.Add(new DataColumn("Item", System.String));
            Cart.Columns.Add(new DataColumn("Price", System.String));
            Session["ShoppingCart"] = Cart;
             
            // Create sample data.
            for (var i : int = 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(); 
                   
      }
 
      function MyDataGrid_Edit(sender, e : DataGridCommandEventArgs) 
      {
         MyDataGrid.EditItemIndex = e.Item.ItemIndex;
         BindGrid();
      }
 
      function MyDataGrid_Cancel(sender, e : DataGridCommandEventArgs) 
      {
         MyDataGrid.EditItemIndex = -1;
         BindGrid();
      }
 
      function MyDataGrid_Update(sender, e : DataGridCommandEventArgs) 
      {
         // For bound columns, the edited value is stored in a TextBox.
         // The TextBox is the 0th element in the column's cell.
         var qtyText : TextBox = TextBox(e.Item.Cells[2].Controls[0]);
         var priceText : TextBox = TextBox(e.Item.Cells[3].Controls[0]);
 
         var item : String = e.Item.Cells[1].Text;  
         var qty : String = qtyText.Text;
         var price : String = priceText.Text;
        
         var dr : 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 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();
      }

      function BindGrid() 
      {
         MyDataGrid.DataSource = CartView;
         MyDataGrid.DataBind();
      } 
 
   </script>
 
<body style="font: 10pt verdana">
 
   <form runat="server">

      <h3>DataGrid Editing Example</h3>
 
      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           Font-Name="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>

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

DataGrid-Klasse
DataGrid-Member
System.Web.UI.WebControls-Namespace
EditCommand
EditCommandColumn