65.9K
CodeProject 正在变化。 阅读更多。
Home

在 CodeProject 上交换 GridView 行的上下位置

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

5分钟阅读

viewsIcon

7755

在这篇文章中,我将发布关于使用 DataTable 交换 GridView 行的上下位置的代码。这是 Aspx 代码     <form id="form1"


在这篇文章中,我将发布关于使用 DataTable 交换 GridView 行的上下位置的代码。

这是 Aspx 代码 

    <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>

这是 C# 代码

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(); // 绑定 Gridview 的示例数据

        }

    }

    

    /// <summary>

    /// 绑定一些示例数据到 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>

    /// 这是移动行上下位置的代码

    /// </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 = "您无法将记录向上移动";

                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 = "您无法将记录向下移动";

                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;

        }

    }

这是屏幕截图: http://img223.imageshack.us/i/swaping.jpg/ 

这是我在这里的第一个帖子,请给我关于这篇文章的评论和建议。 

谢谢,

Srinivas Kotra. 

 

 

 

© . All rights reserved.