DataKeyCollection.Item Property
Gets the key field at the specified index in the collection.
[C#] In C#, this property is the indexer for the DataKeyCollection class.
[Visual Basic] Public Default ReadOnly Property Item( _ ByVal index As Integer _ ) As Object [C#] public object this[ int index ] {get;} [C++] public: __property Object* get_Item( int index ); [JScript] returnValue = DataKeyCollectionObject.Item(index); -or- returnValue = DataKeyCollectionObject(index);
[JScript] In JScript, you can use the default indexed properties defined by a type, but you cannot explicitly define your own. However, specifying the expando attribute on a class automatically provides a default indexed property whose type is Object and whose index type is String.
Arguments [JScript]
- index
- The zero-based index of the key field to retrieve from the collection.
Parameters [Visual Basic, C#, C++]
- index
- The zero-based index of the key field to retrieve from the collection.
Property Value
The key field at the specified index in the collection.
Remarks
Use this indexer to get the key field from the DataKeyCollection at the specified index, using array notation.
Example
[Visual Basic] <%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <head> <script runat="server"> Function CreateDataSource() As ICollection ' Create sample data for the DataGrid control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", GetType(Integer))) dt.Columns.Add(new DataColumn("StringValue", GetType(String))) dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double))) ' Define the primary key for the table as the IntegerValue ' column (column 0). To do this, first create an array of ' DataColumns to represent the primary key. The primary key can ' consist of multiple columns, but in this example, only ' one column is used. Dim keys(1) As DataColumn keys(0) = dt.Columns(0) ' Then assign the array to the PrimaryKey property of the DataTable. dt.PrimaryKey = keys ' Populate the table with sample values. Dim i As Integer For i = 0 To 8 dr = dt.NewRow() dr(0) = i dr(1) = "Item " & i.ToString() dr(2) = 1.23 * (i + 1) dt.Rows.Add(dr) Next ' To persist the data source between posts to the server, ' store it in session state. Session("Source") = dt Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(sender As Object, e As EventArgs) ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If End Sub Sub Delete_Command(sender As Object, e As DataGridCommandEventArgs) ' Retrieve the data table from session state. Dim dt As DataTable = CType(Session("Source"), DataTable) ' Retrieve the data row to delete from the data table. ' Use the DataKeys property of the DataGrid control to get ' the primary key value of the selected row. ' Search the Rows collection of the data table for this value. Dim row As DataRow row = dt.Rows.Find(ItemsGrid.DataKeys(e.Item.ItemIndex)) ' Delete the item selected in the DataGrid from the data source. If Not row is Nothing Then dt.Rows.Remove(row) End If ' Save the data source. Session("Source") = dt ' Create a DataView and bind it to the DataGrid control. Dim dv As DataView = New DataView(dt) ItemsGrid.DataSource = dv ItemsGrid.DataBind() End Sub </script> </head> <body> <form runat="server"> <h3>BaseDataList DataKeys and DataKeyField Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="Black" ShowFooter="False" CellPadding=3 CellSpacing="0" HeaderStyle-BackColor="#aaaadd" DataKeyField="IntegerValue" OnDeleteCommand="Delete_Command" runat="server"> <Columns> <asp:ButtonColumn Text="Delete" CommandName="Delete"/> </Columns> </asp:DataGrid> </form> </body> </html> [C#] <%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <html> <head> <script runat="server"> ICollection CreateDataSource() { // Create sample data for the DataGrid control. DataTable dt = new DataTable(); DataRow dr; // Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue", typeof(string))); dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double))); // Define the primary key for the table as the IntegerValue // column (column 0). To do this, first create an array of // DataColumns to represent the primary key. The primary key can // consist of multiple columns, but in this example, only // one column is used. DataColumn[] keys = new DataColumn[1]; keys[0] = dt.Columns[0]; // Then assign the array to the PrimaryKey property of the DataTable. dt.PrimaryKey = keys; // Populate the table with sample values. for (int i = 0; i < 9; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Item " + i.ToString(); dr[2] = 1.23 * (i + 1); dt.Rows.Add(dr); } // To persist the data source between posts to the server, // store it in session state. Session["Source"] = dt; DataView dv = new DataView(dt); return dv; } void Page_Load(Object sender, EventArgs e) { // Load sample data only once, when the page is first loaded. if (!IsPostBack) { ItemsGrid.DataSource = CreateDataSource(); ItemsGrid.DataBind(); } } void Delete_Command(Object sender, DataGridCommandEventArgs e) { // Retrieve the data table from session state. DataTable dt = (DataTable)Session["Source"]; // Retrieve the data row to delete from the data table. // Use the DataKeys property of the DataGrid control to get // the primary key value of the selected row. // Search the Rows collection of the data table for this value. DataRow row; row = dt.Rows.Find(ItemsGrid.DataKeys[e.Item.ItemIndex]); // Delete the item selected in the DataGrid from the data source. if(row != null) { dt.Rows.Remove(row); } // Save the data source. Session["Source"] = dt; // Create a DataView and bind it to the DataGrid control. DataView dv = new DataView(dt); ItemsGrid.DataSource = dv; ItemsGrid.DataBind(); } </script> </head> <body> <form runat="server"> <h3>BaseDataList DataKeys Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="Black" ShowFooter="False" CellPadding=3 CellSpacing="0" HeaderStyle-BackColor="#aaaadd" DataKeyField="IntegerValue" OnDeleteCommand="Delete_Command" runat="server"> <Columns> <asp:ButtonColumn Text="Delete" CommandName="Delete"/> </Columns> </asp:DataGrid> </form> </body> </html>
[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 2000, Windows XP Professional, Windows Server 2003 family
See Also
DataKeyCollection Class | DataKeyCollection Members | System.Web.UI.WebControls Namespace