1. 程式人生 > >asp.net gridview表頭排序程式碼(全部程式碼),供以後使用方便 VS2008

asp.net gridview表頭排序程式碼(全部程式碼),供以後使用方便 VS2008

前臺檔案:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TQ_MRShort_Building.aspx.cs" Inherits="CropsMis.TQ_MRShort_Building" %>
<!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 id="Head1" runat="server">
    <title>托克遜縣設施農業管理系統</title>
    <link href="manager/images/Style.css" type="text/css" rel="stylesheet"/>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   <table  style="width:100%;" background="../images/left/e-bg.gif" >
      <tr><td align="center" class="page_title">
          <asp:Label ID="lblTitle" runat="server" Text="Label"></asp:Label></td></tr>
    <tr><td  style="height:2px;" class="page_title_Line"></td></tr>
  
       
       
    <tr>
   
    <td>
     <asp:GridView ID="GridView1" runat="server" Width="98%"  AllowSorting="True"
            AllowPaging="True"  BorderStyle="Solid"
            BorderWidth="1px" BorderColor="#0FAAB8"
             PageSize="18"  CssClass="hei12"
        AutoGenerateColumns ="False"  DataKeyNames="材料ID"
        
       
        onpageindexchanging="GridView1_PageIndexChanging"
            onsorting="GridView1_Sorting"  >
            <PagerSettings Mode="NextPreviousFirstLast" FirstPageText="首頁" LastPageText="尾頁"
                NextPageText="下一頁" PreviousPageText="上一頁" />
            <HeaderStyle BackColor="#6fbb1b"  Height="25" CssClass="cubaizi12"  Font-Underline="false" ForeColor="white"    />
            <RowStyle BackColor="#E1FDD7" CssClass="cublue12" HorizontalAlign="Center" Height="25"  BorderColor="#E4FDDF" />  
        <Columns>
        <asp:BoundField DataField="機構ID" HeaderText="機構ID"
                SortExpression="機構ID" Visible="False" />
            <asp:BoundField DataField="材料ID" HeaderText="材料ID"
                SortExpression="材料ID" Visible="False" />
           <asp:BoundField DataField="機構名稱" HeaderText="鄉名稱"
                SortExpression="機構名稱" ControlStyle-Width ="20%" />
                <asp:BoundField DataField="機構簡稱" HeaderText="鄉簡稱"
                SortExpression="機構簡稱" ControlStyle-Width ="20%" />
             <asp:BoundField DataField="材料名稱" HeaderText="材料名稱"
                SortExpression="材料名稱" ControlStyle-Width ="20%" />
                 <asp:BoundField DataField="材料規格" HeaderText="材料規格"
                SortExpression="材料規格" ControlStyle-Width ="20%" />
           <asp:BoundField DataField="計量單位" HeaderText="計量單位"
                SortExpression="計量單位" ControlStyle-Width ="20%" />
            <asp:BoundField DataField="在建溫室數量" HeaderText="在建溫室數量"
                SortExpression="在建溫室數量" ControlStyle-Width ="20%" />
                <asp:BoundField DataField="在建溫室材料需求量" HeaderText="在建溫室材料需求量"
                SortExpression="在建溫室材料需求量" ControlStyle-Width ="20%" />
                <asp:BoundField DataField="材料到貨數量" HeaderText="到貨數量"
                SortExpression="材料到貨數量" ControlStyle-Width ="20%" />
                <asp:BoundField DataField="到貨材料佔在建溫室需求材料百分比" HeaderText="到貨百分比"
                SortExpression="到貨材料佔在建溫室需求材料百分比" ControlStyle-Width ="20%" />
        </Columns>
    </asp:GridView>
    </td>
    </tr>
    </table>
    </div>
    </form>
</body>
</html>

後臺檔案 :

using System;
using System.Collections;
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;

namespace CropsMis
{
    public partial class TQ_MRShort_Building : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bindMyGridview();
               
                string orgid = Request["orgid"].ToString();

                string OrgName = BLL_crops.BLL_Org.GetTownShipName(orgid.ToString());
                this.lblTitle.Text =OrgName+ "在建溫室材料到位及短缺統計";
            }
        }

        private void bindMyGridview()
        {
            string Orgid = Request["orgid"].ToString();
            DataTable dt_BuildingMrShort = BLL_crops.BLL_TQ.p_TQ_MRShort_Building(System.DateTime.Now.Year, int.Parse(Orgid));
            this.GridView1.DataSource = dt_BuildingMrShort;
            this.GridView1.DataBind();


        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            if (e.NewPageIndex >= 0)
            {
                GridView1.PageIndex = e.NewPageIndex;
                bindMyGridview();
            }
        }
    
        private void SortGridView(string sortExpression, string direction)
    {
        string Orgid = Request["orgid"].ToString();
        DataTable dt_BuildingMrShort = BLL_crops.BLL_TQ.p_TQ_MRShort_Building(System.DateTime.Now.Year, int.Parse(Orgid));


        DataView dv = new DataView(dt_BuildingMrShort);
        dv.Sort = sortExpression + direction;
       // grv_Messenge.DataSource = dv;                       //將DataView繫結到GridView上
       // grv_Messenge.DataBind();

        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();

    }
        public SortDirection GridViewSortDirection
        {

            get
            {

                if (ViewState["sortDirection"] == null)

                    ViewState["sortDirection"] = SortDirection.Ascending;

                return (SortDirection)ViewState["sortDirection"];

            }

            set { ViewState["sortDirection"] = value; }

        }

        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sortExpression = e.SortExpression;
        if (GridViewSortDirection == SortDirection.Ascending)                      //設定排序方向
        {
            GridViewSortDirection = SortDirection.Descending;
            SortGridView(sortExpression, " DESC");
        }
        else
        {
            GridViewSortDirection = SortDirection.Ascending;
            SortGridView(sortExpression, " ASC");
        }

        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}

上面的程式碼中關鍵的程式碼是:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sortExpression = e.SortExpression;
        if (GridViewSortDirection == SortDirection.Ascending)                      //設定排序方向
        {
            GridViewSortDirection = SortDirection.Descending;
            SortGridView(sortExpression, " DESC");
        }
        else
        {
            GridViewSortDirection = SortDirection.Ascending;
            SortGridView(sortExpression, " ASC");
        }

        }

private void SortGridView(string sortExpression, string direction)
    {
        string Orgid = Request["orgid"].ToString();
        DataTable dt_BuildingMrShort = BLL_crops.BLL_TQ.p_TQ_MRShort_Building(System.DateTime.Now.Year, int.Parse(Orgid));


        DataView dv = new DataView(dt_BuildingMrShort);
        dv.Sort = sortExpression + direction;
    
        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();

    }
        public SortDirection GridViewSortDirection
        {

            get
            {

                if (ViewState["sortDirection"] == null)

                    ViewState["sortDirection"] = SortDirection.Ascending;

                return (SortDirection)ViewState["sortDirection"];

            }

            set { ViewState["sortDirection"] = value; }

        }