Here I create a Gridview using a BoundField and also create a paging functionality using EventHandler.Step1: Your .aspx page will look like:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DynamicGridView.aspx.cs"Inherits="DynamicGridView" %><!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> </div> </form></body></html>
Step 2 : Your .cs page looks like:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;public partial class DynamicGridView : System.Web.UI.Page{ DataHelper helper = new DataHelper(); List<Employee> emplist = new List<Employee>(); protected void Page_Load(object sender, EventArgs e) { CreateGridView(); } private void CreateGridView() { GridView gv = new GridView(); gv.ID = "EmployeeGridView"; gv.AutoGenerateColumns = false; gv.AllowPaging = true; gv.EnableViewState = true; gv.PageSize = 10; // Default page Size //Create EventHanfler for Paging. gv.PageIndexChanging += new GridViewPageEventHandler(this.gv_PageIndexChanging); helper = new DataHelper(); emplist = helper.GetEmployeeData(); DataTable dt = new DataTable(); if (emplist != null) { if (emplist.Count > 0) { dt = ListToDataTable(emplist); //We convert List view to DataTable because we use the DataTable Column Name as a GridView Column Header. if (dt != null) { if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Columns.Count; i++) { BoundField boundField = new BoundField(); boundField.DataField = dt.Columns[i].ColumnName.ToString(); boundField.HeaderText = dt.Columns[i].ColumnName.ToString(); gv.Columns.Add(boundField); } } } } } PlaceHolder1.Controls.Add(gv); BindGridView(gv, dt); } private void BindGridView(GridView gv, DataTable dt) { gv.DataSource = dt; gv.DataBind(); } void gv_PageIndexChanging(Object sender, GridViewPageEventArgs e) { GridView gv = (GridView)sender; gv.PageIndex = e.NewPageIndex; helper = new DataHelper(); emplist = helper.GetEmployeeData(); DataTable dt = new DataTable(); if (emplist != null) { if (emplist.Count > 0) { dt = ListToDataTable(emplist); if (dt != null) { if (dt.Rows.Count > 0) { BindGridView(gv, dt); } } } } }
//Convert List To DataTable. static DataTable ListToDataTable<T>(IEnumerable<T> list) { var dt = new DataTable(); foreach (var info in typeof(T).GetProperties()) { dt.Columns.Add(new DataColumn(info.Name, info.PropertyType)); } foreach (var t in list) { var row = dt.NewRow(); foreach (var info in typeof(T).GetProperties()) { row[info.Name] = info.GetValue(t, null); } dt.Rows.Add(row); } return dt; }}
Your output page like looks like:
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: