Here I will explain how to bind a generic list to a
GridView and how to bind database values to a generic list using ASP.NET. To do
that, first we start with a database table.
Creating Table
Now create a table named UserDetail with
columns Name, Address and Country. The table looks like below.
After creating the table, insert some values
into the table.
We can build a collection of objects; we first
need an object. I tend to use a Class1 object for that example. The Class1
object simply holds some information about a user - Name, Address, and Country.
To do that,
add one
class file to your website; for that, right-click on your website and select Add
New Item; a window will open; in that select Class file and give the name
Class1.
The following is the object I'm going to use.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
///
<summary>
///
Summary description for Class2
///
</summary>
public
class
Class1
{
//
// TODO: Add constructor logic here
//
private string name;
private string address;
private string country;
public string Name
{
get
{
return name;
}
set
{
name =
value;
}
}
public string Address
{
get
{
return address;
}
set
{
address =
value;
}
}
public string Country
{
get
{
return country;
}
set
{
country =
value;
}
}
}
Now
create a new website and drag and drop a GridView control onto the aspx page. The GridView
code looks like this.
<%@
Page Language="C#"
AutoEventWireup="true"
CodeFile="Default2.aspx.cs"
Inherits="Default2"
%>
<!DOCTYPE
html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<title></title>
</head>
<body>
<form
id="form1"
runat="server">
<div>
<asp:GridView
runat="server"
ID="gvUserDetails"
AutoGenerateColumns="false">
<RowStyle
BackColor="#EFF3FB"
/>
<FooterStyle
BackColor="#507CD1"
Font-Bold="True"
ForeColor="White"
/>
<PagerStyle
BackColor="#2461BF"
ForeColor="White"
HorizontalAlign="Center"
/>
<HeaderStyle
BackColor="#507CD1"
Font-Bold="True"
ForeColor="White"
/>
<AlternatingRowStyle
BackColor="White"
/>
<Columns>
<asp:BoundField
HeaderText="Name"
DataField="Name"
/>
<asp:BoundField
HeaderText="Address"
DataField="Address"
/>
<asp:BoundField
HeaderText="Country"
DataField="Country"
/>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
Now that we have an object, we need a collection to hold them.
One of my favorite collection objects is the List, located in the
System.Collections.Generic namespace, so we'll start with that.
List<Class1>
obj1 = new List<Class1>();
Connection
String
string
strConnection = "Data Source=.; uid=sa; pwd=wintellect;database=Genericdatabase;";
Now double-click on the form and add the following code in Default.aspx.cs file.
using
System;
using
System.Collections.Generic;
using
System.Data;
using
System.Data.SqlClient;
public
partial class
Default2 : System.Web.UI.Page
{
List<Class1>
obj1 = new List<Class1>();
protected void Page_Load(object
sender, EventArgs e)
{
if (!IsPostBack)
{
BindUserDetails();
}
}
protected void BindUserDetails()
{
obj1 = GetUserDetails();
gvUserDetails.DataSource = obj1;
gvUserDetails.DataBind();
}
protected List<Class1>
GetUserDetails()
{
string strConnection =
"Data Source=.; uid=sa; pwd=wintellect;database=Genericdatabase;";
DataTable dt = new
DataTable();
SqlConnection con =
new SqlConnection(strConnection);
con.Open();
SqlCommand cmd = new
SqlCommand("select
* from UserDetail", con);
SqlDataAdapter da =
new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
for (int i = 0;
i < dt.Rows.Count; i++)
{
Class1 userinfo =
new Class1();
userinfo.Name
= dt.Rows[i]["Name"].ToString();
userinfo.Address = dt.Rows[i]["Address"].ToString();
userinfo.Country = dt.Rows[i]["Country"].ToString();
obj1.Add(userinfo);
}
}
return obj1;
}
}