Wednesday, 16 October 2013

Move Selected Gridview Rows to Another Gridview in Asp.net

Designer Source Code

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Transfer selected gridview rows to another gridview in Asp.net</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gvDetails" AutoGenerateColumns="false" CellPadding="5" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true"OnCheckedChanged="chkSelect_CheckChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="UserId" DataField="UserId" />
<asp:BoundField HeaderText="UserName" DataField="UserName" />
<asp:BoundField HeaderText="Education" DataField="Education" />
<asp:BoundField HeaderText="Location" DataField="Location" />
</Columns>
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
</asp:GridView>
<br />
<b>Second Gridview Data</b>
<asp:GridView ID="gvTranferRows" AutoGenerateColumns="false" CellPadding="5" runat="server"EmptyDataText="No Records Found">
<Columns>
<asp:BoundField HeaderText="UserId" DataField="UserId" />
<asp:BoundField HeaderText="UserName" DataField="UserName" />
<asp:BoundField HeaderText="Education" DataField="Education" />
<asp:BoundField HeaderText="Location" DataField="Location" />
</Columns>
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
</asp:GridView>
</div>
</form>
</body>
</html>

 
Code Behind


using System;
using System.Data;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridview();
            BindSecondGrid();
        }
    }
    protected void BindGridview()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("UserId", typeof(Int32));
        dt.Columns.Add("UserName", typeof(string));
        dt.Columns.Add("Education", typeof(string));
        dt.Columns.Add("Location", typeof(string));
        DataRow dtrow = dt.NewRow();    // Create New Row
        dtrow["UserId"] = 1;            //Bind Data to Columns
        dtrow["UserName"] = "Jitendra Gangwar";
        dtrow["Education"] = "MCA";
        dtrow["Location"] = "Ghaziabad";
        dt.Rows.Add(dtrow);
        dtrow = dt.NewRow();               // Create New Row
        dtrow["UserId"] = 2;               //Bind Data to Columns
        dtrow["UserName"] = "Dhirendra";
        dtrow["Education"] = "MBA";
        dtrow["Location"] = "Delhi";
        dt.Rows.Add(dtrow);
        dtrow = dt.NewRow();              // Create New Row
        dtrow["UserId"] = 3;              //Bind Data to Columns
        dtrow["UserName"] = "Pankaj";
        dtrow["Education"] = "B.Tech";
        dtrow["Location"] = "Delhi";
        dt.Rows.Add(dtrow);
        gvDetails.DataSource = dt;
        gvDetails.DataBind();

    }
   protected void chkSelect_CheckChanged(object sender, EventArgs e)
   {
       GetSelectedRows();
       BindSecondGrid();
   }
   protected void BindSecondGrid()
    {
        DataTable dt = (DataTable)ViewState["GetRecords"];
        gvTranferRows.DataSource = dt;
        gvTranferRows.DataBind();
    }
    private void GetSelectedRows()
    {
        DataTable dt;
        if (ViewState["GetRecords"] != null)
            dt = (DataTable)ViewState["GetRecords"];
        else
            dt = CreateTable();
        for (int i = 0; i < gvDetails.Rows.Count; i++)
        {
                CheckBox chk = (CheckBox)gvDetails.Rows[i].Cells[0].FindControl("chkSelect");
                if (chk.Checked)
                {
                    dt = AddGridRow(gvDetails.Rows[i], dt);
                }
                else
                {
                    dt = RemoveRow(gvDetails.Rows[i], dt);
                }
        }
        ViewState["GetRecords"] = dt;
    }
    private DataTable CreateTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("UserId");
        dt.Columns.Add("UserName");
        dt.Columns.Add("Education");
        dt.Columns.Add("Location");
        dt.AcceptChanges();
        return dt;
    }
    private DataTable AddGridRow(GridViewRow gvRow, DataTable dt)
    {
        DataRow[] dr = dt.Select("UserId = '" + gvRow.Cells[1].Text + "'");
        if (dr.Length <= 0)
        {
            dt.Rows.Add();
            int rowscount = dt.Rows.Count - 1;
            dt.Rows[rowscount]["UserId"] = gvRow.Cells[1].Text;
            dt.Rows[rowscount]["UserName"] = gvRow.Cells[2].Text;
            dt.Rows[rowscount]["Education"] = gvRow.Cells[3].Text;
            dt.Rows[rowscount]["Location"] = gvRow.Cells[4].Text;
            dt.AcceptChanges();
       }
        return dt;
    }
    private DataTable RemoveRow(GridViewRow gvRow, DataTable dt)
    {
        DataRow[] dr = dt.Select("UserId = '" + gvRow.Cells[1].Text + "'");
        if (dr.Length > 0)
        {
            dt.Rows.Remove(dr[0]);
            dt.AcceptChanges();
        }
        return dt;
    }
}



3 comments: