How to use ListView control in ASP.NET?
In this article I am going to explain in detail about ListView and its functionality in ASP.NET. I have explain here add, modify and delete records through ListView control with detailed example.
Description :
There are various data control available in the ASP.NET like gridview, datalist, repeater etc. Another one important control is ListView here I have insert new record and also edit /delete that records using list view events.
An also paging, Sorting, row wise data view all topics I covered in this article.Create Table structure
First we are going to create table in sql server
CREATE TABLE [dbo].[emp](
[eno] [int] NULL,
[empname] [varchar](50) NULL,
[sal] [bigint] NULL
)
I have design webpage like below
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
<h3>
List View Example - With all operations Edit / Delete / Selected record View / Sorting / List view Paging </h3>
<br />
<asp:ListView ID="ListView1" runat="server" OnItemCommand="ListView1_ItemCommand"
InsertItemPosition="LastItem" OnItemEditing="ListView1_ItemEditing" OnItemCanceling="ListView1_ItemCanceling"
OnSorting="ListView1_Sorting" ItemPlaceholderID="itemPlaceholder"
onselectedindexchanged="ListView1_SelectedIndexChanged">
<LayoutTemplate>
<table border="0" cellpadding="1" width="800">
<tr style="background-color: #ACCDB9;">
<th style="color: #FFFFFF;">
<asp:LinkButton ID="lnkeno" runat="server" CommandName="Sort" CommandArgument="eno">Eno</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="lnkempname" runat="server" CommandName="Sort" CommandArgument="empname">Employee name</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="lnksal" runat="server" CommandName="Sort" CommandArgument="sal">Salary</asp:LinkButton>
</th>
<th>
Edit / Delete
</th>
<th>
View Details
</th>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lbleno" runat="server" Text='<%#Eval("eno")%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblempname" runat="server" Text='<%#Eval("empname")%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblsal" runat="server" Text='<%#Eval("sal")%>'></asp:Label>
</td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Edit" Text="Edit"></asp:LinkButton>
<asp:LinkButton ID="lnkDelete" runat="server" CommandName="Del" OnClientClick="return confirm('Are you sure you want to delete this record?');"> Delete</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="show" Text="View details"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color: #E9E9E9;">
<td>
<asp:Label ID="lbleno" runat="server" Text='<%#Eval("eno")%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblempname" runat="server" Text='<%#Eval("empname")%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblsal" runat="server" Text='<%#Eval("sal")%>'></asp:Label>
</td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Edit" Text="Edit"></asp:LinkButton>
<asp:LinkButton ID="lnkDelete" runat="server" CommandName="Del">Delete</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="show" Text="view details"></asp:LinkButton>
</td>
</tr>
</AlternatingItemTemplate>
<EditItemTemplate>
<td>
<asp:TextBox ID="txteno" runat="server" Text='<%#Eval("eno") %>' Enabled="false"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtempname" runat="server" Text='<%#Eval("empname") %>'></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtsal" runat="server" Text='<%#Eval("sal") %>'></asp:TextBox>
</td>
<td colspan="2">
<asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Upd">Update</asp:LinkButton>
<asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr id="Tr1" runat="server">
<td>
<asp:TextBox ID="txtIeno" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtIempname" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtIsal" runat="server"></asp:TextBox>
</td>
<td colspan="2">
<asp:Button ID="InsertButton" runat="server" CommandName="Ins" Text="Insert" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
<br />
<br />
<asp:DataPager ID="ItemDataPager" runat="server" PageSize="3" OnPreRender="ItemDataPager_PreRender"
PagedControlID="ListView1">
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="True" ShowNextPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ShowLastPageButton="True" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
<br />
<br />
<br />
<table width="300">
<tr>
<td colspan="2">
<b>Get values from list view and display details</b>
</td>
</tr>
<tr>
<td>
Employee no
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Employee name
</td>
<td>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Employee sal
</td>
<td>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>How to insert / Update / Delete record thorugh List View
Here I have insert records to the database usinb ListView1 ItemCommand event. In this event I have check whether user is click which button based on that I have update / delete records.
protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
//Get command name and process based on that
//Get the commmand name and verify that is insert if yes then this block excecute
if (e.CommandName == "Ins")
{
TextBox txtIeno = (TextBox)e.Item.FindControl("txtIeno");
TextBox txtIempname = (TextBox)e.Item.FindControl("txtIempname");
TextBox txtIsal = (TextBox)e.Item.FindControl("txtIsal");
string insertCommand = "Insert into emp values('" + txtIeno.Text + "', '" + txtIempname.Text + "', '" + txtIsal.Text + "')";
ExecuteCommand(insertCommand);
LoadListView();
}
//Get the commmand name and verify that is udpate if yes then this block excecute
if (e.CommandName == "Upd")
{
TextBox txteno = (TextBox)e.Item.FindControl("txteno");
TextBox txtempname = (TextBox)e.Item.FindControl("txtempname");
TextBox txtsal = (TextBox)e.Item.FindControl("txtsal");
string updateCommand = "Update emp set empname='" + txtempname.Text + "', sal='" + txtsal.Text + "' where eno=" + Convert.ToInt32(txteno.Text) + ";";
ExecuteCommand(updateCommand);
ListView1.EditIndex = -1;
LoadListView();
}
//Get the commmand name and verify that is delete if yes then this block excecute
if (e.CommandName == "Del")
{
Label txteno = (Label)e.Item.FindControl("lbleno");
string deleteCommand = "delete from emp where eno=" + Convert.ToInt32(txteno.Text);
ExecuteCommand(deleteCommand);
LoadListView();
}
//Get the commmand name and verify that is view if yes then this block excecute and display details in the textbox
if (e.CommandName == "show")
{
//get the selected item
ListViewDataItem selectedItem = e.Item as ListViewDataItem;
TextBox1.Text = ((Label)selectedItem.FindControl("lbleno")).Text;
TextBox2.Text = ((Label)selectedItem.FindControl("lblempname")).Text;
TextBox3.Text = ((Label)selectedItem.FindControl("lblsal")).Text;
}
}How to sorting listview data
Using sorting method I have sorted data like below
//Sorting Listview data using sorting event i have verify here previous status ascending or descending
protected void ListView1_Sorting(object sender, ListViewSortEventArgs e)
{
DataTable dataTable = (DataTable)Session["dt"];
if (dataTable != null)
{
Session["sort"] = "Y";
//Create new dataview instance and pass datatable
DataView dataView = new DataView(dataTable);
//get sort direction from the get sort direction method
string sortDirection = GetSortDirection();
//Sort dataview data based on the sort directin value
dataView.Sort = e.SortExpression + " " + sortDirection;
//Assign datasource and bind data to List view
ListView1.DataSource = dataView;
ListView1.DataBind();
}
}Complete Source for code behind
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
SqlCommand sqlcmd = new SqlCommand();
SqlDataAdapter da;
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
//Intially load some data in the list view from database
if (!Page.IsPostBack)
{
LoadListView();
}
}
void LoadListView()
{
try
{
sqlcon.Open();
sqlcmd = new SqlCommand("select * from emp", sqlcon);
da = new SqlDataAdapter(sqlcmd);
da.Fill(dt);
Session["dt"] = dt;
ListView1.DataSource = dt;
ListView1.DataBind();
}
catch (Exception ex)
{
}
finally
{
sqlcon.Close();
}
}
//Set & get sort state in viewstate
private string GVSortDirection
{
get { return ViewState["SortDirection"] as string ?? "DESC"; }
set { ViewState["SortDirection"] = value; }
}
private string GetSortDirection()
{
switch (GVSortDirection)
{
//If previous sort direction if ascending order then assign new direction as descending order
case "ASC":
GVSortDirection = "DESC";
break;
//If previous sort direction if descending order then assign new direction as ascending order
case "DESC":
GVSortDirection = "ASC";
break;
}
return GVSortDirection;
}
protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
//Get command name and process based on that
//Get the commmand name and verify that is insert if yes then this block excecute
if (e.CommandName == "Ins")
{
TextBox txtIeno = (TextBox)e.Item.FindControl("txtIeno");
TextBox txtIempname = (TextBox)e.Item.FindControl("txtIempname");
TextBox txtIsal = (TextBox)e.Item.FindControl("txtIsal");
string insertCommand = "Insert into emp values('" + txtIeno.Text + "', '" + txtIempname.Text + "', '" + txtIsal.Text + "')";
ExecuteCommand(insertCommand);
LoadListView();
}
//Get the commmand name and verify that is udpate if yes then this block excecute
if (e.CommandName == "Upd")
{
TextBox txteno = (TextBox)e.Item.FindControl("txteno");
TextBox txtempname = (TextBox)e.Item.FindControl("txtempname");
TextBox txtsal = (TextBox)e.Item.FindControl("txtsal");
string updateCommand = "Update emp set empname='" + txtempname.Text + "', sal='" + txtsal.Text + "' where eno=" + Convert.ToInt32(txteno.Text) + ";";
ExecuteCommand(updateCommand);
ListView1.EditIndex = -1;
LoadListView();
}
//Get the commmand name and verify that is delete if yes then this block excecute
if (e.CommandName == "Del")
{
Label txteno = (Label)e.Item.FindControl("lbleno");
string deleteCommand = "delete from emp where eno=" + Convert.ToInt32(txteno.Text);
ExecuteCommand(deleteCommand);
LoadListView();
}
//Get the commmand name and verify that is view if yes then this block excecute and display details in the textbox
if (e.CommandName == "show")
{
//get the selected item
ListViewDataItem selectedItem = e.Item as ListViewDataItem;
TextBox1.Text = ((Label)selectedItem.FindControl("lbleno")).Text;
TextBox2.Text = ((Label)selectedItem.FindControl("lblempname")).Text;
TextBox3.Text = ((Label)selectedItem.FindControl("lblsal")).Text;
}
}
void ExecuteCommand(string qry)
{
try
{
sqlcon.Open();
sqlcmd = new SqlCommand(qry, sqlcon);
sqlcmd.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally
{
sqlcon.Close();
}
}
//Call editing event when user click edit
protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.EditIndex = e.NewEditIndex;
LoadListView();
}
//Cancel editing when user do want to update details
protected void ListView1_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
ListView1.EditIndex = -1;
LoadListView();
}
//Sorting Listview data using sorting event i have verify here previous status ascending or descending
protected void ListView1_Sorting(object sender, ListViewSortEventArgs e)
{
DataTable dataTable = (DataTable)Session["dt"];
if (dataTable != null)
{
Session["sort"] = "Y";
//Create new dataview instance and pass datatable
DataView dataView = new DataView(dataTable);
//get sort direction from the get sort direction method
string sortDirection = GetSortDirection();
//Sort dataview data based on the sort directin value
dataView.Sort = e.SortExpression + " " + sortDirection;
//Assign datasource and bind data to List view
ListView1.DataSource = dataView;
ListView1.DataBind();
}
}
protected void ItemDataPager_PreRender(object sender, EventArgs e)
{
try
{
if (Session["sort"] == null)
{
LoadListView();
}
else
{
Session.Remove("sort");
}
}
catch (Exception ex)
{
}
}
protected void ListView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}Output
Editing records
Deleting records
View records
To show selected record details in the textbox like below
Source code:
Client Side: ASP.NET
Code Behind: C#Conclusion
I hope this code snippet is helping you to know about List view control and its uses.