65.9K
CodeProject is changing. Read more.
Home

Swaping GridView rows Up and Down

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Oct 11, 2013

CPOL

5 min read

viewsIcon

7502

In this article I am posting code about swapping GridView rows Up and Down using DataTables.Here is Aspx Code     <form id="form1"


In this article I am posting code about swapping GridView rows Up and Down using DataTables.

Here is Aspx Code 

    <form id="form1" runat="server">

        <div>

        <asp:Label ID="Label1" runat="server" ForeColor="red" Text="Label"></asp:Label> <br /><br />

                  <asp:GridView ID="Gridviewselectbus" runat="server" Height="87px" Width="771px"

                HorizontalAlign="Center" AutoGenerateColumns="False" OnRowCommand="Gridviewselectbus_RowCommand" CellPadding="4" ForeColor="#333333" GridLines="None">

                <RowStyle BorderColor="#999999" HorizontalAlign="Center" VerticalAlign="Middle"

                    Wrap="True" BackColor="#EFF3FB"/>

                <EmptyDataRowStyle BorderColor="#999999" />

                <Columns>

                     <asp:BoundField DataField="Lname" HeaderText="Lname" SortExpression="Lname"/>

                    <asp:BoundField DataField="Fname" HeaderText="Fname" SortExpression="Fname"/>

                    <asp:BoundField DataField="Job" HeaderText="Job" SortExpression="Job"/>

                    <asp:BoundField DataField="Index"  HeaderText="Index" SortExpression="Index" />

                    <asp:TemplateField>

                       <HeaderStyle Width="3%"/>

                       <ItemTemplate>

                           <asp:ImageButton ID="ibtnUp" runat="server" border="0" CommandArgument='<%#Eval("index")%>'

                                CommandName="Up" Height="18px" ImageUrl="images/btn_GreenUP.png" Width="18px"/>

                       </ItemTemplate>

                    </asp:TemplateField>

                    <asp:TemplateField>

                       <HeaderStyle Width="3%"/>

                       <ItemTemplate>

                           <asp:ImageButton ID="ibtnDown" runat="server" border="0" CommandArgument='<%#Eval("index")%>'

                                CommandName="Down" Height="18px" ImageUrl="images/btn_GreenDown.png" Width="18px"/>

                       </ItemTemplate>

                    </asp:TemplateField>

                </Columns>

                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White"/>

                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"/>

                <SelectedRowStyleBackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333"/>

                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White"/>

                <EditRowStyle BackColor="#2461BF" />

                <AlternatingRowStyle BackColor="White"/>

            </asp:GridView>

                   </div>

    </form>

Here is C# code

public partial class _Default : System.Web.UI.Page 

{

    public DataTable dt = new DataTable();

    public DataTable dtnew = new DataTable();

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            bindgrid(); // Bind Gridview with sample data

        }

    }

    

    /// <summary>

    /// Bind some sample data to GridView

    /// </summary>

    private void bindgrid()

    {

        dt.Columns.Add("Fname");

        dt.Columns.Add("Lname");

        dt.Columns.Add("Job");

        dt.Columns.Add("Index");

        DataRow dr;

        dr = dt.NewRow();

        dr[0] = "ONE";

        dr[1] = "User One";

        dr[2] = "Manager";

        dr[3] = 0;

        dt.Rows.Add(dr);

        dr = dt.NewRow();

        dr[0] = "TWO";

        dr[1] = "User Two";

        dr[2] = "Project Lead";

        dr[3] = 1;

        dt.Rows.Add(dr);

        dr = dt.NewRow();

        dr[0] = "THREE";

        dr[1] = "USer Three";

        dr[2] = "Team Lead";

        dr[3] = 2;

        dt.Rows.Add(dr);

        dr = dt.NewRow();

        dr[0] = "FOUR";

        dr[1] = "User Four";

        dr[2] = "Module Lead";

        dr[3] = 3;

        dt.Rows.Add(dr);

        dr = dt.NewRow();

        dr[0] = "FIVE";

        dr[1] = "User Five";

        dr[2] = "Senior Developer";

        dr[3] = 4;

        dt.Rows.Add(dr);

        dr = dt.NewRow();

        dr[0] = "SIX";

        dr[1] = "User Six";

        dr[2] = "Developer";

        dr[3] = 5;

        dt.Rows.Add(dr);

        dt.AcceptChanges();

        Gridviewselectbus.DataSource = dt;

        Gridviewselectbus.DataBind();

        Session["dt"] = dt;

    }

    /// <summary>

    /// here is teh code for moving rows up and down

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    protected void Gridviewselectbus_RowCommand(object sender, GridViewCommandEventArgs e)

    {

        if (e.CommandName == "Up")

        {

            int index = Convert.ToInt32(e.CommandArgument);

            if (index == 0)

            {

                Label1.Text = "You Cant move recor' Up";

                Label1.Visible = true;

                return;

            }

            dt = (DataTable)Session["dt"];

            int value = Convert.ToInt32(dt.Rows[index]["Index"].ToString());

            dt.Rows[index]["Index"] = Convert.ToInt32(index) - 1;

            dt.Rows[index - 1]["Index"] = value;// Convert.ToInt32(index);

            dt.DefaultView.Sort = "Index";

            dt.AcceptChanges();

            dtnew = dt.Copy();

            Gridviewselectbus.DataSource = dt;

            Gridviewselectbus.DataBind();


            dt.AcceptChanges();

            for (int i = 0; i <= Gridviewselectbus.Rows.Count - 1; i++)

            {

                dtnew.Rows[i]["Lname"] = Gridviewselectbus.Rows[i].Cells[0].Text;

                dtnew.Rows[i]["Job"] = Gridviewselectbus.Rows[i].Cells[1].Text;

                dtnew.Rows[i]["Fname"] = Gridviewselectbus.Rows[i].Cells[2].Text;

                dtnew.Rows[i]["Index"] = Gridviewselectbus.Rows[i].Cells[3].Text;

            }

            Session["dt"] = dtnew;

            Label1.Text = string.Empty;

        }

        if (e.CommandName == "Down")

        {

            int index = Convert.ToInt32(e.CommandArgument);

            dt = (DataTable)Session["dt"];

            if (Convert.ToInt16(index + 1) == dt.Rows.Count)

            {

                Label1.Text = "You Cant move record down";

                Label1.Visible = true;

                return;

            }

            int value = Convert.ToInt32(dt.Rows[index]["Index"].ToString());

            dt.Rows[index]["Index"] = Convert.ToInt32(dt.Rows[index]["Index"].ToString()) + 1;

            dt.Rows[index + 1]["Index"] = value;

            dt.AcceptChanges();

            dt.DefaultView.Sort = "Index";

            dt.AcceptChanges();

            dtnew = dt.Copy();

            Gridviewselectbus.DataSource = dt;

            Gridviewselectbus.DataBind();

            dt.AcceptChanges();

            for (int i = 0; i <= Gridviewselectbus.Rows.Count - 1; i++)

            {

                dtnew.Rows[i]["Lname"] = Gridviewselectbus.Rows[i].Cells[0].Text;

                dtnew.Rows[i]["Job"] = Gridviewselectbus.Rows[i].Cells[1].Text;

                dtnew.Rows[i]["Fname"] = Gridviewselectbus.Rows[i].Cells[2].Text;

                dtnew.Rows[i]["Index"] = Gridviewselectbus.Rows[i].Cells[3].Text;

            }

            Session["dt"] = dtnew;

            Label1.Text = string.Empty;

        }

    }

here is screen the shot : http://img223.imageshack.us/i/swaping.jpg/ 

This is my first Post here, pleae give me your comments and advices on this article. 

Thanks,

Srinivas Kotra.