使用gridview的时候,点击列标题栏的时候会自动进行排序,但排列是按照字符的大小进行排序的,如:
1
2
3
11
21
点击排序后为:
1
11
2
21
3
怎么样使结果按照数字大小进行排序啊:
1
2
3
11
21
gridview 排序

解决方案 »

  1.   

    你的sql里这列的数据类型肯定是Nvarchar的,
    查询的时候转换成int类型先。
    SELECT CONVERT(INT,列名) FROM 表名;
    这样绑定GridView后点击标题的时候才会按照数字大小进行排列。
      

  2.   

    order by cast(colname as int)
      

  3.   

    不是数据库里面的,比如自己输入到gridview里面的数字,会按照数字的大小排列不?
      

  4.   


    应该可以,具体我没试过.。
    GridView不是有个数据源吗,数据源一般是个DataTable,可以设置DataTable的某列的类型为int型,前提是你在GridView中数据输入完成后重新绑定GridView。
      

  5.   

      DataTable dt = new DataTable();
                dt.Columns.Add("产品", typeof(int));
    ViewState["SortOrder"] = "产品";
                        ViewState["OrderDire"] = "ASC"; DataTable dt = GetData();//获取DataTable
                    DataView view = dt.DefaultView;
                    string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
                    view.Sort = sort;
                    GridView1.DataSource = view;
                    GridView1.DataBind();
      

  6.   

    如果只是实现简单的可以参考datatable的compute如果需要好的效果网上有jquery的插件
      

  7.   

    1.在数据库里面先排好序
    2.在后台重构获取的数据源,比如:
    int row = ds.Tables[1].Rows.Count;
                ds.Tables[1].Columns.Add("NoLi");
                for (int i = 0; i < row; i++)
                {
                    ds.Tables[1].Rows[i]["NoLi"] = (i + 1).ToString();
                }
                this.rpt_Address.DataSource = ds.Tables[1];
                this.rpt_Address.DataBind();
    把 NoLi列绑定,原先的那个隐藏到hiden里面或者不要
      

  8.   

    指定gridview的coulmn为int类型。
      

  9.   


    那貌似只能按字符串的排序方式比较了。
    不知道能不能重写GridView的排序方法。
      

  10.   

     其次 在设计排序的问题上 最初数据设计都有问题
     为何拿一个String的数据来做排序