天天看點

GridView 行交換 GridView 行上移下移

1.以下為Default.aspx代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">

<html xmlns="[url]http://www.w3.org/1999/xhtml[/url]">

<head runat="server">

    <title>無标題頁</title>

</head>

<body>

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

    <div>    

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">

            <Columns>

                <asp:BoundField DataField="id" HeaderText="id" />

                <asp:BoundField DataField="name" HeaderText="name" />

                <asp:BoundField DataField="age" HeaderText="age" />

                <asp:TemplateField>

                    <EditItemTemplate>

                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

                    </EditItemTemplate>

                    <ItemTemplate>

                        <asp:Button ID="Button1" runat="server" Text="UP" />

                        <asp:Button ID="Button2" runat="server" Text="Down" />

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

    </div>

    </form>

</body>

</html>

2.以下為Default.aspx.cs代碼:

using System;

using System.Configuration;

using System.Data;

//using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

//using System.Xml.Linq;

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            DataTable dt = CreateDataTable();

            GridView1.DataSource = dt;

            GridView1.DataBind();

        }

    }

    /// <summary>

    ///

    /// </summary>

    /// <param name="dt"></param>

    /// <returns></returns>

    public DataTable CreateDataTable()

        DataTable dt = new DataTable();

        //DataColumn dc=dt.n

        dt.Columns.Add("id", typeof(Int16));

        dt.Columns.Add("name", typeof(String));

        dt.Columns.Add("age", typeof(Int16));

        for (int i = 0; i < 6; i++)

            DataRow dr = dt.NewRow();

            dr["id"] = i;

            dr["name"] = "aa"+i.ToString();;

            dr["age"] = 12+i;

            dt.Rows.Add(dr);

        ViewState["dataTable"] = dt;

        return dt;

    protected void exchangeRow(DataRow dataRow, DataRow tempRow)

        tempRow["id"] = dataRow["id"];

        tempRow["name"] = dataRow["name"];

        tempRow["age"] = dataRow["age"];

    protected void Button1_Click(object sender, EventArgs e)

        DataTable dataTable = (DataTable)ViewState["dataTable"];

        string rowindex=((GridViewRow)((Button)sender).Parent.Parent).RowIndex.ToString();

        if (int.Parse(rowindex) - 1 < 0)

            Page.RegisterStartupScript("", "<script>alert('TOP!');</script>");

        else

            DataRow tempRow = dataTable.NewRow();

            exchangeRow(dataTable.Rows[int.Parse(rowindex) - 1], tempRow);

            exchangeRow(dataTable.Rows[int.Parse(rowindex)], dataTable.Rows[int.Parse(rowindex) - 1]);

            exchangeRow(tempRow, dataTable.Rows[int.Parse(rowindex)]);           

        GridView1.DataSource = dataTable;

        GridView1.DataBind();

    protected void Button2_Click(object sender, EventArgs e)

        string rowindex = ((GridViewRow)((Button)sender).Parent.Parent).RowIndex.ToString();     

        if (int.Parse(rowindex) + 1 > dataTable.Rows.Count - 1)

            Page.RegisterStartupScript("", "<script>alert('END!');</script>");

            exchangeRow(dataTable.Rows[int.Parse(rowindex) + 1], tempRow);

            exchangeRow(dataTable.Rows[int.Parse(rowindex)], dataTable.Rows[int.Parse(rowindex) + 1]);

            exchangeRow(tempRow, dataTable.Rows[int.Parse(rowindex)]);

}

繼續閱讀