DataKey Class
Assembly: System.Web (in system.web.dll)
The DataKey class is used to represent the primary key for a record in a data-bound control. The primary key for a record can be composed of one of more fields from the data source. Although the DataKey class is not a collection, it can store multiple key field values. The key field values are populated when one of the constructors for the DataKey class is called. You can retrieve a key field value from a DataKey object in the following ways:
-
Use the DataKey.Item(Int32) property to retrieve a key field value at a specific index in the DataKey object.
-
Use the DataKey.Item(String) property to retrieve a key field value of a specific field.
-
Use the Value property to retrieve the value of the key field at index 0 in the DataKey object. This property is often used as a shortcut to retrieve the key value of a record when the primary key contains only one field.
-
Use the Values property to create an IOrderedDictionary object that can be used to iterate through the key field values.
In general, DataKey objects are automatically generated by data-bound controls when the control's DataKeyNames property is set. The DataKey objects contain the values of the key field or fields specified in the DataKeyNames property. Data-bound controls that display a single record at a time (such as DetailsView or FormView) generally store the DataKey object for the current record displayed in the DataKey property of the control. Data-bound controls that display multiple records at a time (such as GridView) generally store the DataKey objects for each record in the control in a DataKeyArray collection. The DataKeyArray collection is then stored in the DataKeys property of the control.
The following code example demonstrates how to determine the primary key value of a record in a DetailsView control using the Value property of a DataKey object.
<%@ Page language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void CustomerDetailsView_DataBound(Object sender, EventArgs e) { // Get the DataKey object for the current record. DataKey key = CustomerDetailsView.DataKey; // Display the the value of the key field. MessageLabel.Text = "The key field value for the displayed record is " + key.Value.ToString() + "."; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>DataKey Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataKey Example</h3> <asp:detailsview id="CustomerDetailsView" datasourceid="DetailsViewSource" autogeneraterows="true" datakeynames="CustomerID" allowpaging="true" ondatabound="CustomerDetailsView_DataBound" runat="server"> </asp:detailsview> <br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="DetailsViewSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
- AspNetHostingPermission for operating in a hosted environment. Demand value: LinkDemand; Permission value: Minimal.
- AspNetHostingPermission for operating in a hosted environment. Demand value: InheritanceDemand; Permission value: Minimal.