要求是页面上有按纽. 点击后就让gridview里的数据排序.不更改SQL语句. 
因为我获取数据是动态得到不同的表.要每个表都能一个按钮点了按ID排.一个按钮点了按时间排;
GridView 里有哪些方法是干这个的吗? 还有就是那个有个让Gridview按标题排序的吧. 这个大家应该知道. 
我也想过按标题排序.但又要自定义标题.因为只要一个按ID和一个按时间排就行了.多出的不显示.但数据里显示出那列的数据.这个怎么弄? .....不知道大家听明白没有. 说得好像有点乱.

解决方案 »

  1.   

    AllowSorting=true;
    String sort = "";
    GridView1.Sort = sort;
    //Click...Update...
      

  2.   

    你可以这样
    获得后的数据用Session保存起来
    我贴段代码给你看,我用的是List类型,你参考下巴    #region 排序方法    private List<RecommendedSort> SortingDataSource(string sortData, List<RecommendedSort> lstRecommendedSort)
        {
            string sortDataBase = sortData;        string descString = " DESC";
            string ascString = " ASC";        if (sortData.EndsWith(descString))
            {
                sortDataBase = sortData.Substring(0, sortData.Length - descString.Length);
            }        if (sortData.EndsWith(ascString))
            {
                sortDataBase = sortData.Substring(0, sortData.Length - ascString.Length);
            }        Comparison<RecommendedSort> comparison = null;        switch (sortDataBase)
            {
                case "分类":
                    comparison = new Comparison<RecommendedSort>(
                        delegate(RecommendedSort lhs, RecommendedSort rhs)
                        {
                            return lhs.Name.CompareTo(rhs.Name);
                        }
                        );
                    break;
                case "创建时间":
                    comparison = new Comparison<RecommendedSort>(
                         delegate(RecommendedSort lhs, RecommendedSort rhs)
                         {
                             return lhs.CreationDate.CompareTo(rhs.CreationDate);
                         }
                         );
                    break;
                case "数量":
                    comparison = new Comparison<RecommendedSort>(
                         delegate(RecommendedSort lhs, RecommendedSort rhs)
                         {
                             return lhs.RecommendedCount.CompareTo(rhs.RecommendedCount);
                         }
                         );
                    break;
                default:
                    comparison = new Comparison<RecommendedSort>(
                         delegate(RecommendedSort lhs, RecommendedSort rhs)
                         {
                             return lhs.Name.CompareTo(rhs.Name);
                         }
                         );
                    break;
            }        if (sortData.EndsWith("DESC"))
            {
                lstRecommendedSort.Sort(comparison);
                lstRecommendedSort.Reverse();
            }
            else
            {
                lstRecommendedSort.Sort(comparison);
            }        return lstRecommendedSort;
        }    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sortData = e.SortExpression;        if (ViewState["OrderDire"].ToString() == " DESC")
                ViewState["OrderDire"] = " ASC";
            else
                ViewState["OrderDire"] = " DESC";        sortData += ViewState["OrderDire"].ToString();        List<RecommendedSort> lst = SortingDataSource(sortData, SessionConsts.RecommendedSortList);        SessionConsts.RecommendedSortList = lst;        if (lst != null)
            {
                GridView1.DataSource = lst;
                GridView1.DataBind();
            }
        }    #endregion希望对你有用
      

  3.   

    if (!IsPostBack)
       {
        if(this.kjkm_dg.Attributes["SortExpression"]==null) //这里kjkm_dg为datagrid   ID
        {
         this.kjkm_dg.Attributes["SortExpression"]="kmdm";  //这里给datagrid增加一个排序属性,且默认排序表达式为kmdm;
         kjkm_dg.Attributes["SortDirection"]="ASC"; //这里给datagrid增加一个排序方向属性,且默认为升序排列;
        }
        mikecatbind(); //绑定函数,下面介绍
       }  protected void mikecatbind()
      {
       string sqlStr="select * from zc_kjkm";
       DataView dv=new DataView();
       
       string SortExpression=kjkm_dg.Attributes["SortExpression"];
       string SortDirection=kjkm_dg.Attributes["SortDirection"];
       dv=us.Bind(sqlStr).Tables[0].DefaultView;  //来自web service的dataset,这里随便一个ds就可以;
       dv.Sort=SortExpression+" "+SortDirection; //指定视图的排序方式;
       kjkm_dg.DataSource=dv; //指定数据源
       kjkm_dg.DataBind(); //数据绑定}  排序事件的编写:  private void kjkm_dg_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
      {
       string SortExpression=e.SortExpression.ToString();  //获得当前排序表达式
       string SortDirection="ASC"; //为排序方向变量赋初值
       if(SortExpression==kjkm_dg.Attributes["SortExpression"])  //如果为当前排序列
       {
        SortDirection=(kjkm_dg.Attributes["SortDirection"].ToString()==SortDirection?"DESC":"ASC");     //获得下一次的排序状态 }
       kjkm_dg.Attributes["SortExpression"]=SortExpression;
       kjkm_dg.Attributes["SortDirection"]=SortDirection;
       mikecatbind();
      }
      

  4.   

    若要绑定到某个数据源控件,请将 GridView 控件的 DataSourceID 属性设置为该数据源控件的 ID 值。GridView 控件自动绑定到指定的数据源控件,并且可利用该数据源控件的功能来执行排序、更新、删除和分页功能。这是绑定到数据的首选方法。
      

  5.   

    我现在跳过这个方法了.这几天在做别的.  我过点时间再倒回来看这一段.我那时研究了好久.
    SortExpression SortDirection 也是弄过这两个.弄好久还弄不正常. 
    先放着.过几天再倒回来做这一段.上边的代码我会看的.