日期:2014-05-17  浏览次数:20415 次

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

------解决方案--------------------
你的sql里这列的数据类型肯定是Nvarchar的,
查询的时候转换成int类型先。
SELECT CONVERT(INT,列名) FROM 表名;
这样绑定GridView后点击标题的时候才会按照数字大小进行排列。
------解决方案--------------------
order by cast(colname as int)
------解决方案--------------------
先转换为int
------解决方案--------------------
引用:
引用:你的sql里这列的数据类型肯定是Nvarchar的,
查询的时候转换成int类型先。
SELECT CONVERT(INT,列名) FROM 表名;
这样绑定GridView后点击标题的时候才会按照数字大小进行排列。
不是数据库里面的,比如自己输入到gridview里面的数字,会按照数字的大小排列不?
        ……
那就自己写代码将输入的字符串转为数字然后排序
------解决方案--------------------
引用:
引用:你的sql里这列的数据类型肯定是Nvarchar的,
查询的时候转换成int类型先。
SELECT CONVERT(INT,列名) FROM 表名;
这样绑定GridView后点击标题的时候才会按照数字大小进行排列。
不是数据库里面的,比如自己输入到gridview里面的数字,会按照数字的大小排列不?
        ……


应该可以,具体我没试过.。
GridView不是有个数据源吗,数据源一般是个DataTable,可以设置DataTable的某列的类型为int型,前提是你在GridView中数据输入完成后重新绑定GridView。
------解决方案--------------------
  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();
------解决方案--------------------
如果只是实现简单的可以参考datatable的compute

如果需要好的效果网上有jquery的插件
------解决方案--------------------
先按数值的位数排序,再按数值的大小排序,是否好实现呢。
------解决方案--------------------
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();