Retrieve a non-primary DataKey value from a GridView
We have seen how to set the DataKeyNames property of the GridView control with the primary key field of the data table. The DataKeyNames property also allows to set multiple DataKey values.The example given below demonstrates how to retrieve a non-primary DataKey value from a GridView. In the example, GridView control is used to display records from the accounts table of the ERP database. In the GridView control's declaration, we set the AccountCode as the first key name and AccountName as the second key name and AccountDescription as third key name. Even though, the AccountName and AccountDescription are not the primary key fields, we can assign these non primary key fields to the DataKeyNames property as shown in the code given below.
<asp:GridView ID="GridView1" DataSourceId="MyAccDataSource" DataKeyNames="AccountCode,AccountName,AccountDescription" AutoGenerateSelectButton="true" onSelectedIndexChanged="GridView1_SelectedIndexChanged" runat="server"> </asp:GridView>
We need to configure the SqlDataSource control to retrieve data from the AccountsTable.
<asp:SqlDataSource ID="MyAccDataSource" ConnectionString="<%$Connectionstrings:ERPConnectionString%>" SelectCommand="SELECT AccountsTable.AccountCode,AccountsTable.AccountName, AccountsTable.AccountDescription FROM AccountsTable" runat="server"/>
When the user selects a row in the gridView control, the SelectedIndexChanged event is raised. In the SelectedIndexChanged event handler of the gridview we need to write the following code.
protected void GridView1_SelectedIndexChanged(Object src, EventArgs e) { string Description = GridView1.DataKeys[GridView1.SelectedIndex]. Values["AccountDescription"].ToString(); }
GridView control stores data keys as a collection and this collection is called the DataKeys collection. This DataKeys collection is exposed by the GridView control's DataKeys property. We retrieve the data key associated with a selected row by using the statement:
string id = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString();
This statement returns the value of the data key associated with the selected row of the gridView control.
Here, we have assigned multiple data keys to DataKeyNames property. So we can use a statement that looks like this:
string Description = GridView1.DataKeys[GridView1.SelectedIndex].Values["AccountDescription"].ToString();
The above statement retrieves the value of the AccountDescription key for the selected row in the GridView control.
GridView Articles
- GridView AutoGenerateColumns property
- Bind GridView control with SqlDataSource control
- DataBinding in a GridView control
- Binding a GridView programmatically with dataset
- Binding a GridView programmatically with Generic List Collection
- Using fields with the GridView control
- Adding Boundfields to a GridView control
- Adding button fields to a GridView control
- Create Templatefields in a GridView control
- Access a value using SelectedIndexChanged() event when a row in a GridView is selected
- How to restrict an item from being selected using GridView SelectedIndexChanging Event
- How to add a new row in the GridView control by using the GridView footer template
- Gridview datakeynames
- Formatting GridView control with CSS
- GridView rowDataBound event
Become an Expert
Learn More
Q1. What is Azure Platform?
GridView CommandField example
GridView and DetailsView Master/Detail page using SqlDataSource control
POCO overview and advantages - POCO class, Entity Framework in Enterprise Applications
Query entity data model using linq to entities
Difference between arraylist and list collection
How to create a Web service using Visual Studio.net
FormView DataBound Event
Calling base class constructor in C#
Convert a sequence to a generic list using ToList()method
ERP Software Development
Project ideas for students
Accounting Software
Creating an ASP.Net MVC 3 application
Using assemblies in .net applications
How to implement form validation using ASP.Net 2.0 Validation Controls
Constructors in Visual Basic.Net
GridView CommandField example
GridView and DetailsView Master/Detail page using SqlDataSource control
POCO overview and advantages - POCO class, Entity Framework in Enterprise Applications
Query entity data model using linq to entities
Difference between arraylist and list collection
How to create a Web service using Visual Studio.net
FormView DataBound Event
Calling base class constructor in C#
Convert a sequence to a generic list using ToList()method
ERP Software Development
Project ideas for students
Accounting Software
Creating an ASP.Net MVC 3 application
Using assemblies in .net applications
How to implement form validation using ASP.Net 2.0 Validation Controls
Constructors in Visual Basic.Net