In this article we will explore persistent selected row feature of gridview in .NET 4.0. In .NET 3.5 if a row is selected in page 1 same row get selected in all the page.
.NET 3.5 GridView row select
2nd row has been selected in page 1
Now navigate to Page 2, Same 2nd row is selected
.NET 4.0 Persistent gridview row select feature
2nd row has been selected in page 1

Now navigate to Page 2, no row is selected

Now navigate back to Page1, 2nd row is still selected.

Now let's see how we can achieve this in .NET 4.0
Step 1: Add a gridview in aspx page with select commandfield.
<asp:GridView ID="gvEmployee" AutoGenerateColumns="False" PageSize="4" AllowPaging="True" runat="server" DataKeyNames="SkillID" OnPageIndexChanging="gvEmployee_PageIndexChanging" EnablePersistedSelection="true"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField HeaderText="Skill ID" DataField="SkillID" /> <asp:BoundField HeaderText="Employee Id" DataField="EmployeeId" /> <asp:BoundField HeaderText="Skill Set" DataField="SkillSet" /> <asp:BoundField HeaderText="Remarks" DataField="Remarks" /> </Columns> <SelectedRowStyle BackColor="Maroon" BorderStyle="Solid" BorderWidth="1px" ForeColor="White" /> </asp:GridView>
Set EnablePersistedSelection property to true.
DataKeyNames has to be set to if EnablePersistedSelection is set.
Step 2: Write method BindGridView and GetTableData which will return DataTable to bind to gridview.
private void BingGridView() { gvEmployee.DataSource = GetTableData(); gvEmployee.DataBind(); }
private DataTable GetTableData() { DataTable table = new DataTable(); table.Columns.Add("SkillID", typeof(string)); table.Columns.Add("EmployeeId", typeof(string)); table.Columns.Add("SkillSet", typeof(string)); table.Columns.Add("Remarks", typeof(string)); table.Rows.Add("1", "100", "ASP.NET", "Remarks1"); table.Rows.Add("2", "100", "SQL", "Remarks2"); table.Rows.Add("3", "100", "Ajax", "Remarks5"); table.Rows.Add("4", "200", "WPF", "Remarks2"); table.Rows.Add("5", "200", "WCF", "Remarks3"); table.Rows.Add("6", "300", "PHP", "Remarks1"); table.Rows.Add("7", "300", "Oracle", "Remarks2"); table.Rows.Add("8", "300", "Javascipt", "Remarks3"); return table; }
Step 3: Now call BindGridView on Page_Load.
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BingGridView(); } }
Step 4: Write gvEmployee_PageIndexChanging method which will execute on click of page number.
protected void gvEmployee_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvEmployee.PageIndex = e.NewPageIndex; BingGridView(); }
This ends the article of .NET 4.0 persistent gridview row selection.
|