In this article, we will see how to manage listview using asp.net 2008. Here I have taken a Table “UserDetails” with the columns ID,Name and SSN. Here we have do the operations based on Name/SSN.

Now we will see the aspx page, it contains the list view operations as a events,


<%@ Page Language="C#" MasterPageFile="~/PFP.master" AutoEventWireup="true" CodeFile="ListView.aspx.cs" Inherits="Test_ListView" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="cphPFPMaster" Runat="Server">
<style>
.Listviewth
{
height: 25px;
width:125px;
font-size: 11px;
font-weight: bold;
padding: 0px 7px;
margin: 20px 0px 0px;
text-align: center;
border-right: 1px solid #8D8D8D;
}

.Listviewtable
{
border-collapse:collapse;
border:1px solid #2E2E2E;
}

.Listviewtr
{
background: #637687;
}
.Listviewtd
{
text-align: left;
border-right: 1px solid #8D8D8D;
}

.ListviewAltTr
{
background: #DCE0E8;
}

</style>

<div align="center">
<asp:ListView ID="lvDependant" runat="server" 
InsertItemPosition="FirstItem"
onitemcommand="lvDependant_ItemCommand"
onitemcanceling="lvDependant_ItemCanceling"
onitemediting="lvDependant_ItemEditing"
onitemupdating="lvDependant_ItemUpdating"
oniteminserting="lvDependant_ItemInserting"
onpagepropertieschanged="lvDependant_PagePropertiesChanged"
onitemdeleting="lvDependant_ItemDeleting"
onitemdatabound="lvDependant_ItemDataBound" onsorting="lvDependant_Sorting"
ondatabound="lvDependant_DataBound">
<LayoutTemplate>
<table  cellpadding="1" class="Listviewtable" width="100%">
<tr class="Listviewtr">
    <th align="left" class="Listviewth"><asp:LinkButton ID="lnkFirstName" runat="server" CommandName="Sort" CommandArgument="FirstName" ForeColor="White">Name</asp:LinkButton></th>
    <th align="left" class="Listviewth" style="width:70px"><asp:LinkButton ID="lnkSSN" runat="server" CommandName="Sort" CommandArgument="SSN" ForeColor="White">SSN</asp:LinkButton></th>
    <th></th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>

</LayoutTemplate>
<ItemTemplate>
<tr>
    <td class="Listviewtd">
    <asp:Label runat="server" ID="lblID" SkinID="NormalLable" visible="false"><%#Eval("ID")%></asp:Label>
    <asp:Label runat="server" ID="lblName" SkinID="NormalLable"><%#Eval("Name")%></asp:Label></td>
    <td class="Listviewtd"><asp:Label runat="server" ID="lblSSN" SkinID="NormalLable"><%#Eval("SSN")%></asp:Label></td>
   
    <td class="Listviewtd"><asp:LinkButton ID="lnkEdit" runat="server" CommandName="Edit">Edit</asp:LinkButton></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="ListviewAltTr">
    <td class="Listviewtd">
    <asp:Label runat="server" ID="lblDepID" SkinID="NormalLable" visible="false"><%#Eval("ID")%></asp:Label>
    <asp:Label runat="server" ID="lblFirstName" SkinID="NormalLable"><%#Eval("Name")%></asp:Label></td>
    <td class="Listviewtd"><asp:Label runat="server" ID="lblSSN" SkinID="NormalLable"><%#Eval("SSN")%></asp:Label></td>
    <td class="Listviewtd"><asp:LinkButton ID="lnkEdit" runat="server" CommandName="Edit">Edit</asp:LinkButton></td>
</tr>
</AlternatingItemTemplate>
<EditItemTemplate>
<tr>
<td class="Listviewtd" align="center">
    <asp:Label runat="server" ID="lblEID" SkinID="NormalLable" visible="false" Text='<%#Eval("ID")%>'></asp:Label>         
    <asp:TextBox ID="txtEFirstName" runat="server" Text='<%#Eval("Name") %>' Width="125px" SkinID="NormalTextBox"></asp:TextBox>
     <asp:RequiredFieldValidator ID="rfvFirstName" runat="server" ControlToValidate="txtEFirstName"
        Display="None" ErrorMessage="First Name is required." SetFocusOnError="true" ValidationGroup="Edit">.</asp:RequiredFieldValidator>
    <ajaxtoolkit:textboxwatermarkextender ID="txtwmxFirstName" runat="server"
        TargetControlID="txtEFirstName" WatermarkText="First Name"
        WatermarkCssClass="waterMarkedText" />
</td>
<td class="Listviewtd" align="center">
    <asp:TextBox ID="txtESSN" runat="server" Width="100px" Text='<%#Eval("SSN") %>' SkinID="NormalTextBox"></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvSSN" runat="server" ControlToValidate="txtESSN"
    Display="None" ErrorMessage="SSN is required." SetFocusOnError="true" ValidationGroup="Edit">.</asp:RequiredFieldValidator>

 </td>
 <td class="Listviewtd">  
        <asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Update" ValidationGroup="Edit">Update</asp:LinkButton>
        <asp:LinkButton ID="lnkDelete" runat="server" CommandName="Delete">Delete</asp:LinkButton>
        <asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</td>

</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr id="Tr1" runat="server">
 <td class="Listviewtd" align="center">
    <asp:Label runat="server" ID="lblID" SkinID="NormalLable" visible="false" Text='<%#Eval("ID")%>'></asp:Label>
    <asp:TextBox ID="txtName" runat="server" Width="125px" SkinID="NormalTextBox"></asp:TextBox>
     <asp:RequiredFieldValidator ID="rfvIFirstName" runat="server" ControlToValidate="txtName"
                Display="None" ErrorMessage="First Name is required." SetFocusOnError="true" ValidationGroup="Insert">.</asp:RequiredFieldValidator>                         
    <ajaxtoolkit:textboxwatermarkextender ID="txtwmxIFirstName" runat="server"
        TargetControlID="txtName" WatermarkText="First Name"
        WatermarkCssClass="waterMarkedText" />
</td>
<td class="Listviewtd" align="center">
    <asp:TextBox ID="txtISSN" runat="server" Width="100px" SkinID="NormalTextBox"></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvISSN" runat="server" ControlToValidate="txtISSN"
            Display="None" ErrorMessage="SSN is required." SetFocusOnError="true" ValidationGroup="Insert">.</asp:RequiredFieldValidator>
 </td>

<td class="Listviewtd">
    <asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert" ValidationGroup="Insert" >Add</asp:LinkButton>
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>

</div>
<table>
<tr>
<td>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Edit" ShowSummary="false" ShowMessageBox="true"/>
<asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="Insert" ShowSummary="false" ShowMessageBox="true"/>
</td>
</tr>
</table>
</asp:Content>


In Codebehind we do operations as mentioned in ListView like below,


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Test_ListView : System.Web.UI.Page
{
#region Declarations

BusinessLayer.DependantBL objDependantBL = null;
private static String tmpSort = " DESC";
private static DataTable tmpdtResult = new DataTable();
private static String tmpSortExpression = "ID ASC";

#endregion

#region Built-Ins

protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
    lvDependant.DataSource = GetDependant();
    lvDependant.DataBind();
    TextBox _txtFirstname = (TextBox)lvDependant.InsertItem.FindControl("txtName");
    _txtFirstname.Focus();
}
}
catch (Exception ex)
{
CommonBehavior.ShowMessage(CommonBehavior.ShowMessageType.ERROR, ex.Message, (HtmlControl)Master.FindControl("divMessagePanel"), (Label)Master.FindControl("lblError"), (Image)Master.FindControl("imgStatus"));
}
}

protected void lvDependant_ItemCommand(object sender, ListViewCommandEventArgs e)
{
objDependantBL = new BusinessLayer.DependantBL();
string _sMessage = string.Empty;

try
{

if (e.CommandName == "Insert")
{
    Label _lblID = (Label)e.Item.FindControl("lblID");
    TextBox _txtFirstname = (TextBox)e.Item.FindControl("txtName");
    TextBox _txtSSN = (TextBox)e.Item.FindControl("txtISSN");
   
    objDependantBL.FirstName = _txtFirstname.Text.Trim();
    objDependantBL.SSN = _txtSSN.Text.Trim();
    _sMessage = objDependantBL.SetDependant();
}
else if (e.CommandName == "Update")
{
    Label _lblID = (Label)e.Item.FindControl("lblEID");
    TextBox _txtFirstname = (TextBox)e.Item.FindControl("txtEFirstName");
    TextBox _txtSSN = (TextBox)e.Item.FindControl("txtESSN");
   
    objDependantBL.DependantID = Convert.ToInt64(_lblID.Text.Trim());
    objDependantBL.FirstName = _txtFirstname.Text.Trim();
    objDependantBL.SSN = _txtSSN.Text.Trim();
    _sMessage = objDependantBL.SetDependant();
}
else if (e.CommandName == "Delete")
{
    Label _lblID = (Label)e.Item.FindControl("lblEID");
    objDependantBL.DependantID = Convert.ToInt64(_lblID.Text.Trim());
    _sMessage = objDependantBL.DeleteDependant();
}

if (!_sMessage.Equals(string.Empty))
{
    CommonBehavior.ShowMessage(CommonBehavior.ShowMessageType.INFORMATION, _sMessage, (HtmlControl)Master.FindControl("divMessagePanel"), (Label)Master.FindControl("lblError"), (Image)Master.FindControl("imgStatus"));
}
}
catch (Exception ex)
{
}
}

protected void lvDependant_ItemEditing(object sender, ListViewEditEventArgs e)
{
lvDependant.EditIndex = e.NewEditIndex;
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
TextBox _txtFirstname = (TextBox)lvDependant.EditItem.FindControl("txtEFirstName");
}

protected void lvDependant_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
lvDependant.EditIndex = -1;
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
TextBox _txtFirstname = (TextBox)lvDependant.InsertItem.FindControl("txtName");
}

protected void lvDependant_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
lvDependant.EditIndex = -1;
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
}

protected void lvDependant_ItemInserting(object sender, ListViewInsertEventArgs e)
{
lvDependant.EditIndex = -1;
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
TextBox _txtFirstname = (TextBox)lvDependant.InsertItem.FindControl("txtName");
}

protected void lvDependant_PagePropertiesChanged(object sender, EventArgs e)
{
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
}

protected void lvDependant_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
lvDependant.EditIndex = -1;
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
}

protected void lvDependant_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{        
LinkButton lnkDelete = (LinkButton)e.Item.FindControl("lnkDelete");
if (lnkDelete != null)
{
    lnkDelete.Attributes.Add("onclick",
      "return confirm('Are you sure you want to delete this Dependant?');");
}
}
}

protected void lvDependant_Sorting(object sender, ListViewSortEventArgs e)
{
tmpSortExpression = e.SortExpression + (string)((e.SortDirection == SortDirection.Ascending) ? tmpSort : tmpSort);
tmpSort = (tmpSort == " ASC") ? " DESC" : " ASC";
lvDependant.DataSource = GetDependant();
lvDependant.DataBind();
}

protected void lvDependant_DataBound(object sender, EventArgs e)
{
/*if (lvDependant.InsertItemPosition != InsertItemPosition.None)
{
TextBox _txtFirstname = (TextBox)lvDependant.InsertItem.FindControl("txtName");
//_txtFirstname.Focus();
ScriptManager.RegisterStartupScript(_txtFirstname.Page, _txtFirstname.GetType(), _txtFirstname.ClientID + "_SetFocusOnLoad", CommonBehavior.SetFocusScript(_txtFirstname), true);
}*/
}

#endregion

#region User-Defined

private DataTable GetDependant()
{
try
{
objDependantBL = new BusinessLayer.DependantBL();
tmpdtResult = objDependantBL.GetDependant();
tmpdtResult.DefaultView.Sort = tmpSortExpression;
return tmpdtResult;
}
catch (Exception ex)
{
}
return null;
}
#endregion
}


Here I have given a code part only. We need to create the Tables and SP as mention above and do the operations in Business Layer.


Comments (3)

On 18 May 2018 at 10:10 , Unknown said...

please can you share code file on my email address...aliadnanahmed786@gmail.com

 
On 3 September 2018 at 07:14 , genga g said...

A very nice guide. I will definitely follow these tips. Thank you for sharing such detailed article. I am learning a lot from you.
Rprogramming Training in annanagar

r-programming Training in marathahalli

r-programming Training in rajajinagar

r-programming Training in bangalore

 
On 14 March 2019 at 02:30 , Jaweed Khan said...

Thanks For sharing Your information The information shared Is Very Valuable Please Keep Updating Us Time Just went On reading Thae article Python Online Training DataScience Online Training AWS Online Training Hadoop Online Training