官术网_书友最值得收藏!

2.7 表頭雙向排序

排序也是一個重要的功能,我們希望單擊數據表的表頭標題能排序,并且再次單擊能排回來,單擊“屬性”菜單,設置行為AllowSorting的值為True即可,如圖2-18所示。

圖2-18 設置排序屬性

這樣并沒有完成,不然就會報錯:GridView“GridView1”激發了未處理的事件“Sorting”。

同分頁的道理一樣,雙擊Sorting,系統為我們添加了如下代碼:

        protectedvoid GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
        }

相比分頁,排序的代碼就要復雜的多,其實排序的原理就是利用DataView的Sort屬性,類似于拼湊SQL語句,頁面的開始在ViewState中存儲主鍵和排序,默認是“升序”,ViewState["OrderDire"]="ASC";,由于單擊標題我們希望能“排”回來,所以要在分頁事件中添加ViewState["OrderDire"]="Desc";,全部代碼如下所示。

        SqlConnection sqlcon;
        string strCon=ConfigurationManager.ConnectionStrings[ "SQLCONN" ].ToString();
        protectedvoid Page_Load(object sender, EventArgs e)
              {
        if (!IsPostBack)
                    {
                        ViewState["SortOrder"]="員工編號";
                      ViewState["OrderDire"]="ASC";
                      bind();
                    }
              }
        //綁定
        publicvoid bind()
              {
        string sqlstr="select top 20 員工編號,身份證號碼,姓名,性別,地址  from 章立民工
    作室";
                    sqlcon=newSqlConnection(strCon);
        SqlDataAdapter myda=newSqlDataAdapter(sqlstr, sqlcon);
        DataSet myds=newDataSet();
                    sqlcon.Open();
                    myda.Fill(myds, "table");
        DataView view=myds.Tables[0].DefaultView;
        string  sort = (string)ViewState["SortOrder"]  +  "  "  +  (string)ViewState
    ["OrderDire"];
                    view.Sort=sort;
                    GridView1.DataSource=view;
                    GridView1.DataBind();
                    sqlcon.Close();
              }
        protectedvoid GridView1_Sorting(object sender, GridViewSortEventArgs e)
              {
        string sPage=e.SortExpression;
        if (ViewState["SortOrder"].ToString() == sPage)
                    {
        if (ViewState["OrderDire"].ToString() == "Desc")
                          ViewState["OrderDire"]="ASC";
        else
                          ViewState["OrderDire"]="Desc";
                    }
        else
                    {
                      ViewState["SortOrder"]=e.SortExpression;
                    }
                    bind();
              }

排序效果如圖2-19所示。

圖2-19 排序效果

同時單擊其他列也可以排序,如圖2-20所示。

圖2-20 單擊“員工編號”排序

主站蜘蛛池模板: 渭南市| 长沙县| 六枝特区| 来安县| 嘉义市| 曲松县| 宁安市| 山西省| 台南市| 新和县| 天全县| 开远市| 元阳县| 保康县| 潼南县| 新建县| 泽州县| 马公市| 武定县| 乐平市| 南和县| 墨脱县| 胶南市| 中山市| 丽水市| 长白| 阳春市| 深泽县| 茂名市| 扎鲁特旗| 丘北县| 临汾市| 会昌县| 香港| 霍林郭勒市| 扬州市| 白沙| 辽阳市| 丰原市| 杭锦后旗| 长岭县|