DetailsView is
a data control which is used to display single record from a data  table. It allows us to perform the operations
like insert, edit, update and delete records.
In this article i will explain
with example How to perform Bind, Insert, Edit, Update, Cancel , Delete and
paging operation in DetailsView in asp.net using both C# and Vb.Net language
and using Stored procedure and Sql Server as a back end database.
Implementation:
Implementation:
Create a database “Test”, Then
create one table i.e. Emp_Personal
Column Name 
 | 
  
Data Type 
 | 
 
EmpPer_Id 
 | 
  
Int(Primary
  Key. So set is identity=true) 
 | 
 
EmpName 
 | 
  
varchar(100) 
 | 
 
Age 
 | 
  
Int 
 | 
 
Address 
 | 
  
varchar(500) 
 | 
 
Create a stored procedure to
save Employee details in sql server
database table
create PROCEDURE SaveEmp_SP
                @EmpName  VARCHAR(100),               
                @age   INT,
                @Address VARCHAR(500)
AS
BEGIN
                INSERT
INTO dbo.Emp_Personal(EmpName,Age,Address)
                VALUES(@EmpName,@age,@Address)
END
Create a stored procedure to get
Employee details in sql server
database table
CREATE PROCEDURE GetEmp_SP               
AS
BEGIN
                SELECT
* FROM dbo.Emp_Personal
END
Create a stored procedure to delete
Employee details in sql server
database table
create PROCEDURE DeleteEmp_Sp
@EmpId int
AS
BEGIN
              delete
from dbo.Emp_Personal
where Empper_id=@EmpId
END
Create a stored procedure to update
 Employee details in sql server
database table
create PROCEDURE
[dbo].[UpdateEmp_SP]
 @EmpId int,
                @EmpName                               VARCHAR(100),
                @age                                                   
INT,
                @Address                                           VARCHAR(500)
AS
BEGIN
              update
dbo.Emp_Personal set
EmpName=@EmpName,Age=@age,Address=@Address where Empper_id=@empId
END
create connection string  in web config:
<connectionStrings>
                               
<add name="Empcon" connectionString="Data
Source=localhost;Initial Catalog=test;Integrated Security=True"/>
               
</connectionStrings>
Source
Code:
  <fieldset style="width:250px";>
    <legend><strong>DetailsView Example in Asp.net</strong></legend>     
        <asp:DetailsView ID="EmpDetailsView"
runat="server"
AllowPaging="True"
           
AutoGenerateRows="False"
Height="50px"
Width="270px"
CellPadding="4"
           
onmodechanging="EmpDetailsView_ModeChanging"
           
onpageindexchanging="EmpDetailsView_PageIndexChanging"
           
onitemdeleting="EmpDetailsView_ItemDeleting"
           
oniteminserting="EmpDetailsView_ItemInserting"
           
onitemupdating="EmpDetailsView_ItemUpdating"
DataKeyNames="EmpPer_Id"
           
ForeColor="#333333"
GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
           
<CommandRowStyle
BackColor="#E2DED6"
Font-Bold="True"
/>
           
<EditRowStyle
BackColor="#999999"
/>
           
<EmptyDataTemplate>
               
No Data<br
/>
               
<asp:LinkButton ID="lnlAddNew"
runat="server"
CommandName="new">Add
New</asp:LinkButton>
               
<br
/>
               
<br
/>
           
</EmptyDataTemplate>
           
<FieldHeaderStyle
BackColor="#E9ECF1"
Font-Bold="True"
/>
           
<Fields>              
               
<asp:TemplateField HeaderText="Id">
                    <ItemTemplate>
                        <asp:Label ID="lblId" runat="server" Text='<%# Eval("EmpPer_Id") %>'></asp:Label>
                    </ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField HeaderText="Emp
Name">
               
<ItemTemplate>
                        <asp:Label ID="lblName" runat="server" Text='<%# Eval("EmpName") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEditName" runat="server" Text='<%# Eval("EmpName") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                    </InsertItemTemplate>                   
               
</asp:TemplateField>
               
<asp:TemplateField HeaderText="Age">
                    <ItemTemplate>
                        <asp:Label ID="lblAge" runat="server" Text='<%# Eval("Age") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEditAge" runat="server" Text='<%# Eval("Age") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                        <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
                    </InsertItemTemplate>                   
               
</asp:TemplateField>
               
<asp:TemplateField HeaderText="Address">
                    <ItemTemplate>
                        <asp:Label ID="lblAddress" runat="server" Text='<%# Eval("Address") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEditAddress" runat="server" Text='<%# Eval("Address") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                        <asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
                    </InsertItemTemplate>                   
               
</asp:TemplateField>              
               
<asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lkNew" runat="server" 
CommandName="new">New</asp:LinkButton>
                        <asp:LinkButton ID="lkEdit" runat="server" CommandName="edit">Edit</asp:LinkButton>
                        <asp:LinkButton ID="lkDelete" runat="server" CommandName="delete">Delete</asp:LinkButton>
                     </ItemTemplate>
                    <EditItemTemplate>
                        <asp:LinkButton ID="lkEditUpdate" runat="server" CommandName="update">Update</asp:LinkButton>
                        <asp:LinkButton ID="lkEditCancel" runat="server" CommandName="cancel">Cancel</asp:LinkButton>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                        <asp:LinkButton ID="lkInsert" runat="server" CommandName="insert">Insert</asp:LinkButton>
                        <asp:LinkButton ID="lkCancel" runat="server" CommandName="cancel">Cancel</asp:LinkButton>
                    </InsertItemTemplate>                   
               
</asp:TemplateField>
           
</Fields>
           
<FooterStyle
BackColor="#5D7B9D"
Font-Bold="True"
ForeColor="White"
/>
           
<HeaderStyle
BackColor="#5D7B9D"
Font-Bold="True"
ForeColor="White"
/>
           
<PagerStyle
BackColor="#284775"
ForeColor="White"
HorizontalAlign="Center"
/>
           
<RowStyle
BackColor="#F7F6F3"
ForeColor="#333333"
/>
        </asp:DetailsView>
    </fieldset>
C#.Net
Code to Bind, Insert, Edit, Update,
Cancel and Delete from DetailsView
write the code as:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class DetailView :
System.Web.UI.Page
{
  SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings["Empcon"].ConnectionString);
    protected void
Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
           
BindDetailView();
        }
    }
    private void
BindDetailView()
    {
        SqlDataAdapter adp = new
SqlDataAdapter();
        DataSet ds = new DataSet();
        try
        {
           
adp = new SqlDataAdapter("GetEmp_SP", con);
           
adp.SelectCommand.CommandType = CommandType.StoredProcedure;
           
adp.Fill(ds);
           
if (ds.Tables[0].Rows.Count > 0)
           
{
               
EmpDetailsView.DataSource = ds;
               
EmpDetailsView.DataBind();
           
}
           
else
           
{
               
EmpDetailsView.DataSource = null;
               
EmpDetailsView.DataBind();
           
}       
        }
        catch(Exception
ex)
        {
           
Response.Write("Oops!! Error occured:
" + ex.Message.ToString());
        }
        finally
        {
           
con.Close();
           
ds.Dispose();
           
adp.Dispose();
        }
    }     
    protected void
EmpDetailsView_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
       
EmpDetailsView.ChangeMode(e.NewMode);
       
BindDetailView();
    }
    protected void
EmpDetailsView_ItemInserting(object sender, DetailsViewInsertEventArgs e)
    {
        SqlCommand cmd = new
SqlCommand();
        Int32 age;
        string ename = string.Empty;
        string addr = string.Empty;
        double sal;
        try
        {
           
ename = ((TextBox)EmpDetailsView.Rows[1].FindControl("txtName")).Text;
           
age = Convert.ToInt32(((TextBox)EmpDetailsView.Rows[2].FindControl("txtAge")).Text);
           
addr = ((TextBox)EmpDetailsView.Rows[3].FindControl("txtAddress")).Text;
           
cmd = new SqlCommand("SaveEmp_SP", con);
           
cmd.CommandType = CommandType.StoredProcedure;
           
cmd.Parameters.AddWithValue("@EmpName",
ename);
           
cmd.Parameters.AddWithValue("@age",
age);
           
cmd.Parameters.AddWithValue("@Address",
addr);
           
con.Open();
           
cmd.ExecuteNonQuery();
           
cmd.Dispose();
           
EmpDetailsView.ChangeMode(DetailsViewMode.ReadOnly);
           
BindDetailView();
        }
        catch (Exception
ex)
        {
           
Response.Write("Oops !! Error Occured:
" + ex.Message.ToString());
        }
        finally
        {
           
cmd.Dispose();
           
con.Close();
            ename = string.Empty;
           
addr = string.Empty;
        }
    }
    protected void
EmpDetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        SqlCommand cmd = new
SqlCommand();
        Int32 age;
        Int32 empId;
        string ename = string.Empty;
        string addr = string.Empty;
        double sal;
        try
        {
           
ename = ((TextBox)EmpDetailsView.Rows[1].FindControl("txtEditName")).Text;
           
age = Convert.ToInt32(((TextBox)EmpDetailsView.Rows[2].FindControl("txtEditAge")).Text);
           
addr = ((TextBox)EmpDetailsView.Rows[3].FindControl("txtEditAddress")).Text;
           
cmd = new SqlCommand("UpdateEmp_SP", con);
           
cmd.CommandType = CommandType.StoredProcedure;
           
//Read the Emp_id from the DataKeynames
           
empId = Convert.ToInt32(EmpDetailsView.DataKey["EmpPer_Id"]);
           
cmd.Parameters.AddWithValue("@empId",
empId);
           
cmd.Parameters.AddWithValue("@EmpName",
ename);
            cmd.Parameters.AddWithValue("@age", age);
           
cmd.Parameters.AddWithValue("@Address",
addr);
           
con.Open();
           
cmd.ExecuteNonQuery();
           
cmd.Dispose();
           
EmpDetailsView.ChangeMode(DetailsViewMode.ReadOnly);
           
BindDetailView();
        }
        catch (Exception
ex)
        {
           
Response.Write("Oops !! Error Occured:
" + ex.Message.ToString());
        }
        finally
        {
           
cmd.Dispose();
           
con.Close();
           
ename = string.Empty;
           
addr = string.Empty;
        }
    } 
    protected void
EmpDetailsView_ItemDeleting(object sender, DetailsViewDeleteEventArgs e)
    {
        SqlCommand cmd=new
SqlCommand(); 
        try
        {
           
//Read the Emp_id from the DataKeynames
           
Int32 empId = Convert.ToInt32(EmpDetailsView.DataKey["EmpPer_Id"]);
           
cmd = new SqlCommand("DeleteEmp_Sp", con);
           
cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@EmpId",
SqlDbType.Int).Value = empId;
           
con.Open();
           
cmd.ExecuteNonQuery();
           
cmd.Dispose();           
           
BindDetailView();
        }
        catch (Exception
ex)
        {
           
Response.Write("Oops !! Error Occured:
" + ex.Message.ToString());
        }
        finally
        {
           
con.Close();
           
cmd.Dispose();
        }
    }
    protected void
EmpDetailsView_PageIndexChanging(object sender,
DetailsViewPageEventArgs e)
    {
       
EmpDetailsView.PageIndex = e.NewPageIndex;
       
BindDetailView();
    }
}
VB.Net
Code to Bind, Insert, Edit, Update,
Cancel and Delete from DetailsView
Design
the page as described in Source Code section above but replace the
lines           onmodechanging="EmpDetailsView_ModeChanging"       
    onpageindexchanging="EmpDetailsView_PageIndexChanging"       
    onitemdeleting="EmpDetailsView_ItemDeleting"       
    oniteminserting="EmpDetailsView_ItemInserting"       
    onitemupdating="EmpDetailsView_ItemUpdating" from the DetailsView source
code.
In
the code behind file(.aspx.vb) write the code as:
write the code as:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Partial Public Class DetailView
    Inherits System.Web.UI.Page
    Dim con As SqlConnection = New
SqlConnection(ConfigurationManager.ConnectionStrings("Empcon").ConnectionString)
    Protected Sub
Page_Load(ByVal sender As
Object, ByVal e
As EventArgs)
        If Page.IsPostBack = False
Then
           
BindDetailView()
        End If
    End Sub
    Private 
Bind  Sub New()
    Dim adp As SqlDataAdapter = New
SqlDataAdapter()
    Dim ds As DataSet = New DataSet()
        Try
           
adp = New
SqlDataAdapter("GetEmp_SP", con)
           
adp.SelectCommand.CommandType = CommandType.StoredProcedure
           
adp.Fill(ds)
           
If ds.Tables(0).Rows.Count > 0 Then
               
EmpDetailsView.DataSource = ds
               
EmpDetailsView.DataBind()
           
Else 
               
EmpDetailsView.DataSource = Nothing
               
EmpDetailsView.DataBind()
           
End If
        Catch ex As Exception
           
Response.Write("Oops!! Error
occured: " + ex.Message.ToString())
        Finally
           
con.Close()
           
ds.Dispose()
           
adp.Dispose()
        End Try
    End Sub
    Protected Sub
EmpDetailsView_ModeChanging(ByVal sender As Object, ByVal e As DetailsViewModeEventArgs)
       
EmpDetailsView.ChangeMode(e.NewMode)
       
BindDetailView()
    End Sub
    Protected Sub
EmpDetailsView_ItemInserting(ByVal sender As Object, ByVal e As DetailsViewInsertEventArgs)
        Dim cmd As SqlCommand = New SqlCommand()
        Dim age As Int32
        Dim ename As String = String.Empty
        Dim addr As String = String.Empty
        Dim sal As Double
        Try
           
ename = (CType(EmpDetailsView.Rows(1).FindControl("txtName"), TextBox)).Text
           
age = Convert.ToInt32((CType(EmpDetailsView.Rows(2).FindControl("txtAge"), TextBox)).Text)
           
addr = (CType(EmpDetailsView.Rows(3).FindControl("txtAddress"), TextBox)).Text
           
cmd = New SqlCommand("SaveEmp_SP", con)
           
cmd.CommandType = CommandType.StoredProcedure
           
cmd.Parameters.AddWithValue("@EmpName",
ename)
           
cmd.Parameters.AddWithValue("@age",
age)
           
cmd.Parameters.AddWithValue("@Address",
addr)
           
con.Open()
           
cmd.ExecuteNonQuery()
           
cmd.Dispose()
           
EmpDetailsView.ChangeMode(DetailsViewMode.ReadOnly)
           
BindDetailView()
        Catch ex As Exception
           
Response.Write("Oops !! Error Occured:
" + ex.Message.ToString())
        Finally
           
cmd.Dispose()
           
con.Close()
           
ename = String.Empty
           
addr = String.Empty
        End Try
    End Sub
    Protected Sub
EmpDetailsView_ItemUpdating(ByVal sender As Object, ByVal e As DetailsViewUpdateEventArgs)
        Dim cmd As SqlCommand = New SqlCommand()
        Dim age As Int32
        Dim empId As Int32
        Dim ename As String = String.Empty
        Dim addr As String = String.Empty
        Dim sal As Double
        Try
           
ename = (CType(EmpDetailsView.Rows(1).FindControl("txtEditName"), TextBox)).Text
           
age = Convert.ToInt32((CType(EmpDetailsView.Rows(2).FindControl("txtEditAge"), TextBox)).Text)
           
addr = (CType(EmpDetailsView.Rows(3).FindControl("txtEditAddress"), TextBox)).Text
           
cmd = New SqlCommand("UpdateEmp_SP", con)
           
cmd.CommandType = CommandType.StoredProcedure
           
'Read the Emp_id from the DataKeynames
           
empId = Convert.ToInt32(EmpDetailsView.DataKey("EmpPer_Id"))
           
cmd.Parameters.AddWithValue("@empId",
empId)
           
cmd.Parameters.AddWithValue("@EmpName",
ename)
           
cmd.Parameters.AddWithValue("@age",
age)
           
cmd.Parameters.AddWithValue("@Address",
addr)
           
con.Open()
           
cmd.ExecuteNonQuery()
           
cmd.Dispose()
           
EmpDetailsView.ChangeMode(DetailsViewMode.ReadOnly)
           
BindDetailView()
        Catch ex As Exception
           
Response.Write("Oops !! Error Occured:
" + ex.Message.ToString())
        Finally
           
cmd.Dispose()
           
con.Close()
            ename = String.Empty
           
addr = String.Empty
        End Try
    End Sub
    Protected Sub
EmpDetailsView_ItemDeleting(ByVal sender As Object, ByVal e As DetailsViewDeleteEventArgs)
        Dim cmd As SqlCommand = New SqlCommand()
        Try
           
'Read the Emp_id from the DataKeynames
           
Dim empId As
Int32 = Convert.ToInt32(EmpDetailsView.DataKey("EmpPer_Id"))
           
cmd = New SqlCommand("DeleteEmp_Sp", con)
           
cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@EmpId", SqlDbType.Int).Value = empId
           
con.Open()
           
cmd.ExecuteNonQuery()
           
cmd.Dispose()
           
BindDetailView()
        Catch ex As Exception
           
Response.Write("Oops !! Error Occured: "
+ ex.Message.ToString())
        Finally
           
con.Close()
           
cmd.Dispose()
        End Try
    End Sub
    Protected Sub
EmpDetailsView_PageIndexChanging(ByVal sender As Object, ByVal e As DetailsViewPageEventArgs)
       
EmpDetailsView.PageIndex = e.NewPageIndex
       
BindDetailView()
    End Sub
End Class
0 comments:
Post a Comment