Here I am going to explain you how to add dynamic rows in a
gridview control by click on Add button and simultaneously Remove dynamic rows
from gridview Control by click on Remove button. I have used here one aspx page
with a gridview control.Also I have used two images as Add.jpg and Remove.jpg
in my images folder as shown Below:-
My GridView View As:-
My Database  Design is like Below:-
Now Here is my Table
Defination:-
Reference_ID int        Unchecked
Title    varchar(10)    Checked
First_Name    varchar(15)    Checked
Middle_Name            varchar(15)    Checked
Last_Name     varchar(15)    Checked
Reference_Type        varchar(15)    Checked
Emp_Member_ID      int        Checked
Emp_Member_Type varchar(15)    Checked
Created_On   datetime         Checked
Created_By    int        Checked
Modified_On  datetime         Checked
Modified_By  int        Checked
Is_Active        bit        Checked
Is_Deleted      bit        Checked
My Table Defination
Looks Like :-
Now  We have to provide
connectionstrigs in web.config.
Here I am providing My
connection strings :-
<?xml version="1.0"?>
<configuration>
 
<connectionStrings>
   
<add name="ShibashishConnectionString" connectionString="Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ShibashishAddRemoveRowFromGrid.mdf;Integrated
Security=True;User Instance=True"
     
providerName="System.Data.SqlClient" />
 
</connectionStrings>
 
<system.web>
   
<compilation debug="true" targetFramework="4.0"/>
 
</system.web>
</configuration>
Now come to the Design Part. where you have to take one Gridview
From Your ToolBox and and use your required controls inside that gridview.Here I
am using Two DropDownList and Three TextBox Controls and Two Image Button
controls as Add and Remove .
It Looks Like:-
My Source Code:-
<%@ Page
Language="C#"
AutoEventWireup="true"
CodeFile="ShibashishAddRemoveRowFromGridView.aspx.cs"
    Inherits="ShibashishAddRemoveRowFromGridView"
%>
<!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>Shibashish Mohanty</title>
</head>
<body>
    <h1>
        Om
Namah Shivaya</h1>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridGuardians"
runat="server"
AutoGenerateColumns="False"
BorderColor="#507CD1"
            BorderStyle="Solid"
BorderWidth="1"
CellPadding="4"
Font-Names="Verdana"
Font-Size="9pt"
            ForeColor="#333333"
GridLines="None"
OnRowCommand="GridGuardians_RowCommand"
            ShowHeader="false">
            <Columns>
               
<asp:TemplateField>
                   
<ItemTemplate>
                        <table cellpadding="-1"
cellspacing="-1"
style="border: none;">
                            <tr>
                                <td>
                                    <asp:ImageButton ID="imgBtnAdd"
runat="server"
CausesValidation="false"
CommandName="Add"
                                        Height="8" ImageUrl="~/images/Add.jpg"
ToolTip="Add New
Row" Visible='<%# Eval("ShowAddButton") %>'
                                        Width="8" />
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:ImageButton ID="imgBtnRemove"
runat="server"
CausesValidation="false"
CommandName="Remove"
                                        Height="8" ImageUrl="~/images/Remove.jpg"
ToolTip="Delete
Row" Visible='<%# Eval("ShowRemoveButton") %>'
                                        Width="8" />
                                </td>
                            </tr>
                        </table>
                   
</ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField>
                   
<ItemTemplate>
                        <asp:DropDownList ID="ddlSelectType" runat="server" Text='<%#Eval("Reference_Type") %>'>
                            <asp:ListItem>Select</asp:ListItem>
                            <asp:ListItem>Father</asp:ListItem>
                            <asp:ListItem>Son</asp:ListItem>
                            <asp:ListItem>Brother</asp:ListItem>
                            <asp:ListItem>Spouse</asp:ListItem>
                        </asp:DropDownList>
                   
</ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField>
                   
<ItemTemplate>
                        <asp:DropDownList ID="DdlGridTitle" runat="server" Text='<%#Eval("Title") %>'>
                            <asp:ListItem>Select</asp:ListItem>
                            <asp:ListItem>Mr</asp:ListItem>
                            <asp:ListItem>Mrs</asp:ListItem>
                            <asp:ListItem>Shree</asp:ListItem>
                            <asp:ListItem>Miss</asp:ListItem>
                        </asp:DropDownList>
                   
</ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField>
                   
<ItemTemplate>
                        <asp:TextBox ID="TxtGuardFirstName" runat="server"
Text='<%#Eval("First_Name") %>'
                            Width="120"></asp:TextBox>
                   
</ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField>
                   
<ItemTemplate>
              
         <asp:TextBox ID="TxtGuardMiddleName" runat="server"
Text='<%#Eval("Middle_Name") %>'
                            Width="120"></asp:TextBox>
                   
</ItemTemplate>
               
</asp:TemplateField>
               
<asp:TemplateField>
                   
<ItemTemplate>
                        <asp:TextBox ID="TxtGuardLastName" runat="server" Text='<%#Eval("Last_Name") %>'
                            Width="120"></asp:TextBox>
                   
</ItemTemplate>
               
</asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>
Here is my Code
Behind:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public partial class ShibashishAddRemoveRowFromGridView
: System.Web.UI.Page
{
    protected void
Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.BindData();
            if (GridGuardians.Rows.Count == 0)
            {
               
SetDefaultRow();
            }
        }
    }
//GridView RowCommand Event For Adding and Removing Rows
From Gridview
    protected void
GridGuardians_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Add")
        {
            GridViewRow gridRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
            int RowIndex = gridRow.RowIndex;
            DataTable dt = new
DataTable();
            DataColumn ShowButton = new
DataColumn("ShowAddButton",
typeof(bool));
            DataColumn ShowRemoveButton = new DataColumn("ShowRemoveButton", typeof(bool));
            DataColumn dcSelectTypeID = new DataColumn("Reference_Type", typeof(string));
            DataColumn dcSelectTitle = new DataColumn("Title", typeof(string));
            DataColumn dcFirstname = new
DataColumn("First_Name",
typeof(string));
            DataColumn dcMiddlename = new
DataColumn("Middle_Name",
typeof(string));
            DataColumn dcLastname = new
DataColumn("Last_Name",
typeof(string));
           
dt.Columns.Add(dcSelectTypeID);
           
dt.Columns.Add(dcFirstname);
           
dt.Columns.Add(dcMiddlename);
           
dt.Columns.Add(dcLastname);
           
dt.Columns.Add(ShowRemoveButton);
           
dt.Columns.Add(ShowButton);
           
dt.Columns.Add(dcSelectTitle);
            foreach (GridViewRow
dr in GridGuardians.Rows)
            {
               
DataRow dtrow = dt.NewRow();
               
DropDownList ddlSelectType = (DropDownList)dr.FindControl("ddlSelectType");
               
dtrow["Reference_Type"] =
ddlSelectType.SelectedItem.Text;
               
DropDownList ddlSelectTitle = (DropDownList)dr.FindControl("DdlGridTitle");
               
dtrow["Title"] =
ddlSelectTitle.SelectedItem.Text;
               
TextBox txtFirstname = (TextBox)dr.FindControl("TxtGuardFirstName");
               
dtrow["First_Name"] =
txtFirstname.Text;
               
TextBox txtMiddleName = (TextBox)dr.FindControl("TxtGuardMiddleName");
               
dtrow["Middle_Name"] =
txtMiddleName.Text;
               
TextBox txtLastname = (TextBox)dr.FindControl("TxtGuardLastName");
               
dtrow["Last_Name"] =
txtLastname.Text;
               
ImageButton showbutton = (ImageButton)dr.FindControl("imgBtnAdd");
               
dtrow["ShowAddButton"] = false;
               
ImageButton showRemovebutton = (ImageButton)dr.FindControl("imgBtnRemove");
               
dtrow["ShowRemoveButton"] =
false;
               
dt.Rows.Add(dtrow);
            }
            DataRow newRow = dt.NewRow();
           
newRow["Reference_Type"] = "Select";
           
newRow["Title"] = "Select";
           
newRow["First_Name"] = "";
           
newRow["Middle_Name"] = "";
           
newRow["Last_Name"] = "";
           
newRow["ShowAddButton"] = true;
           
newRow["ShowRemoveButton"]
= true;
           
dt.Rows.Add(newRow);
           
GridGuardians.DataSource = dt;
           
GridGuardians.DataBind();
        }
        else if
(e.CommandName == "Remove")
        {
            GridViewRow gridRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
            int RowIndex = gridRow.RowIndex;
            DataTable dt1 = new
DataTable();
            DataColumn ShowButton = new
DataColumn("ShowAddButton",
typeof(bool));
            DataColumn ShowRemoveButton = new DataColumn("ShowRemoveButton", typeof(bool));
            DataColumn dcSelectTypeID = new DataColumn("Reference_Type", typeof(string));
            DataColumn dcSelectTitle = new DataColumn("Title", typeof(string));
            DataColumn dcFirstname = new
DataColumn("First_Name",
typeof(string));
            DataColumn dcMiddlename = new
DataColumn("Middle_Name",
typeof(string));
            DataColumn dcLastname = new
DataColumn("Last_Name",
typeof(string));
           
dt1.Columns.Add(dcSelectTypeID);
           
dt1.Columns.Add(dcFirstname);
           
dt1.Columns.Add(dcMiddlename);
           
dt1.Columns.Add(dcLastname);
           
dt1.Columns.Add(ShowRemoveButton);
           
dt1.Columns.Add(ShowButton);
           
dt1.Columns.Add(dcSelectTitle);
            foreach (GridViewRow
dr in GridGuardians.Rows)
            {
               
DataRow dtrow = dt1.NewRow();
                DropDownList
ddlSelectType = (DropDownList)dr.FindControl("ddlSelectType");
               
dtrow["Reference_Type"] =
ddlSelectType.SelectedItem.Text;
               
DropDownList ddlSelectTitle = (DropDownList)dr.FindControl("DdlGridTitle");
                dtrow["Title"]
= ddlSelectTitle.SelectedItem.Text;
               
TextBox txtFirstname = (TextBox)dr.FindControl("TxtGuardFirstName");
               
dtrow["First_Name"] =
txtFirstname.Text;
               
TextBox txtMiddleName = (TextBox)dr.FindControl("TxtGuardMiddleName");
               
dtrow["Middle_Name"] =
txtMiddleName.Text;
               
TextBox txtLastname = (TextBox)dr.FindControl("TxtGuardLastName");
               
dtrow["Last_Name"] =
txtLastname.Text;
               
ImageButton showbutton = (ImageButton)dr.FindControl("imgBtnAdd");
               
dtrow["ShowAddButton"] = false;
               
ImageButton showRemovebutton = (ImageButton)dr.FindControl("imgBtnRemove");
               
dtrow["ShowRemoveButton"] =
false;
               
dt1.Rows.Add(dtrow);
            }
           
dt1.Rows.RemoveAt(RowIndex);
           
GridGuardians.DataSource = dt1;
           
GridGuardians.DataBind();
            if (GridGuardians.Rows.Count > 0)
            {
               
ImageButton imgLast = (ImageButton)GridGuardians.Rows[GridGuardians.Rows.Count
- 1].FindControl("imgBtnRemove");
               
imgLast.Visible = true;
               
ImageButton imgFirst = (ImageButton)GridGuardians.Rows[GridGuardians.Rows.Count
- 1].FindControl("imgBtnAdd");
               
imgFirst.Visible = true;
            }
        }
    }
//Methods For Binding Data to Gridview
   
#region
BindGurdians GridView
    private void
BindData()
    {
        string strConnString = ConfigurationManager.ConnectionStrings["ShibashishConnectionString"].ConnectionString;
        DataTable dtSelect = new
DataTable();
        using (SqlConnection
con = new SqlConnection(strConnString))
        {
            string strQuery = "SELECT
[Reference_ID], [Title], [First_Name], [Middle_Name], [Last_Name],
[Reference_Type], [Emp_Member_Type] FROM [Shibashish'sGuardians]";
            SqlCommand cmd = new
SqlCommand(strQuery);
            using (SqlDataAdapter
sda = new SqlDataAdapter())
            {
               
cmd.Connection = con;
               
con.Open();
               
sda.SelectCommand = cmd;
               
sda.Fill(dtSelect);
               
DataTable dt = new DataTable();
               
DataColumn ShowButton = new DataColumn("ShowAddButton", typeof(bool));
               
DataColumn ShowRemoveButton = new DataColumn("ShowRemoveButton", typeof(bool));
               
DataColumn dcSelectTypeID = new DataColumn("Reference_Type", typeof(string));
               
DataColumn dcSelectTitle = new DataColumn("Title", typeof(string));
               
DataColumn dcFirstname = new DataColumn("First_Name", typeof(string));
               
DataColumn dcMiddlename = new DataColumn("Middle_Name", typeof(string));
               
DataColumn dcLastname = new DataColumn("Last_Name", typeof(string));
               
dt.Columns.Add(dcSelectTypeID);
               
dt.Columns.Add(dcFirstname);
               
dt.Columns.Add(dcMiddlename);
               
dt.Columns.Add(dcLastname);
               
dt.Columns.Add(ShowRemoveButton);
                dt.Columns.Add(ShowButton);
               
dt.Columns.Add(dcSelectTitle);
               
foreach (DataRow
dr in dtSelect.Rows)
               
{
                   
DataRow newRow = dt.NewRow();
                   
newRow["Reference_Type"] =
dr["Reference_Type"].ToString();
                   
newRow["Title"] = dr["Title"].ToString();
                   
newRow["First_Name"] = dr["First_Name"].ToString();
                   
newRow["Middle_Name"] = dr["Middle_Name"].ToString();
                   
newRow["Last_Name"] = dr["Last_Name"].ToString();
                   
newRow["ShowAddButton"] = true;
                   
newRow["ShowRemoveButton"]
= true;
                   
dt.Rows.Add(newRow);
               
}
               
GridGuardians.DataSource = dt;
               
GridGuardians.DataBind();
            }
        }
    }
   
#endregion
//Show Default Row if there is no data inside the
Gridview
   
#region
Default Row Method
    public void
SetDefaultRow()
    {
        DataTable dt = new
DataTable();
        DataColumn ShowButton = new
DataColumn("ShowAddButton",
typeof(bool));
        DataColumn ShowRemoveButton = new DataColumn("ShowRemoveButton", typeof(bool));
        DataColumn dcSelectTypeID = new DataColumn("Reference_Type", typeof(string));
        DataColumn dcSelectTitle = new DataColumn("Title", typeof(string));
        DataColumn dcFirstname = new
DataColumn("First_Name",
typeof(string));
        DataColumn dcMiddlename = new
DataColumn("Middle_Name",
typeof(string));
        DataColumn dcLastname = new
DataColumn("Last_Name",
typeof(string));
       
dt.Columns.Add(dcSelectTypeID);
       
dt.Columns.Add(dcFirstname);
       
dt.Columns.Add(dcMiddlename);
       
dt.Columns.Add(dcLastname);
       
dt.Columns.Add(ShowRemoveButton);
       
dt.Columns.Add(ShowButton);
       
dt.Columns.Add(dcSelectTitle);
        DataRow newRow = dt.NewRow();
       
newRow["Reference_Type"] = "Select";
       
newRow["Title"] = "Select";
       
newRow["First_Name"] = "";
       
newRow["Middle_Name"] = "";
       
newRow["Last_Name"] = "";
       
newRow["ShowAddButton"] = true;
       
newRow["ShowRemoveButton"]
= true;
       
dt.Rows.Add(newRow);
       
GridGuardians.DataSource = dt;
       
GridGuardians.DataBind();
    }
   
#endregion
}
Now After running it Will Display As:-
Here I am Clicking Plus Button By which it will add a new
Row and it looks like Below Figure:-
Now Again I am Clicking on Plus Button It will add
Another Row as Shown Below:-
Now By Click on Remove Button It will Remove One Row As
Below:-








 
No comments:
Post a Comment