Check this example. Now please take its reference and correct your code.
Database
For this example I have used of Northwind database that you can download using the link given below.
Download Northwind Database
HTML
<asp:ListView ID="lvCustomers" runat="server" GroupPlaceholderID="groupPlaceHolder1"
ItemPlaceholderID="itemPlaceHolder1">
<LayoutTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<th>CustomerId</th>
<th>ContactName</th>
<th>Country</th>
</tr>
<asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder>
</table>
</LayoutTemplate>
<GroupTemplate>
<tr><asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder></tr>
</GroupTemplate>
<ItemTemplate>
<td><%# Eval("CustomerId") %></td>
<td><%# Eval("ContactName") %></td>
<td><%# Eval("Country") %></td>
</ItemTemplate>
</asp:ListView>
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindListView();
}
}
private void BindListView()
{
lvCustomers.DataSource = GetData();
lvCustomers.DataBind();
}
private DataTable GetData()
{
DataTable dt = new DataTable();
if (Cache["DataTable"] == null)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT TOP 5 CustomerId, ContactName, Country FROM Customers";
cmd.Connection = con;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
Cache.Insert("DataTable", dt, null, DateTime.Now.AddDays(5), System.Web.Caching.Cache.NoSlidingExpiration);
}
}
}
}
else
{
dt = Cache["DataTable"] as DataTable;
}
return dt;
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Me.BindListView()
End If
End Sub
Private Sub BindListView()
lvCustomers.DataSource = GetData()
lvCustomers.DataBind()
End Sub
Private Function GetData() As DataTable
Dim dt As DataTable = New DataTable()
If Cache("DataTable") Is Nothing Then
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand()
cmd.CommandText = "SELECT TOP 5 CustomerId, ContactName, Country FROM Customers"
cmd.Connection = con
Using sda As SqlDataAdapter = New SqlDataAdapter(cmd)
sda.Fill(dt)
Cache.Insert("DataTable", dt, Nothing, DateTime.Now.AddDays(5), System.Web.Caching.Cache.NoSlidingExpiration)
End Using
End Using
End Using
Else
dt = TryCast(Cache("DataTable"), DataTable)
End If
Return dt
End Function