读书人

怎么进行datagridview 排序.自定义排序

发布时间: 2013-07-11 15:38:46 作者: rapoo

如何进行datagridview 排序.自定义排序
我用datagridview 有一个日期型数据排序.默认不是按日期先后顺序排序的.而是把日期当做文本在排序了.

我的要求是 datagridview 日期型列按日期先后顺序排序. dataTable 是通过NPOI从excel 中来的数据. 已经读到datagridview'中了.
[解决办法]
http://blog.sina.com.cn/s/blog_538311d30100p3ve.html
[解决办法]

引用:
上面的大哥.我看过那个好像没法实现.



//AllowSorting="True" OnSorting="gvStore_Sorting"
protected void gvStore_Sorting(object sender, GridViewSortEventArgs e)
{
//双向排序
if (ViewState["sort"] == null)
{
ViewState["sort"] = "ASC";//默认升序
}
else
{
if (ViewState["sort"].ToString() == "ASC")
{
ViewState["sort"] = "DESC";
}
else
{
ViewState["sort"] = "ASC";
}
}

//重新绑定数据
SqlConnection conn = new SqlConnection(DbConn.connStr);
SqlDataAdapter sda = new SqlDataAdapter("select * from store", conn);


DataSet ds = new DataSet();
sda.Fill(ds);
DataView dv = new DataView(ds.Tables[0]);//数据试图
//排序条件
dv.Sort = e.SortExpression + " " + ViewState["sort"].ToString();
//设置数据源
gvStore.DataSource = dv;
gvStore.DataBind();
}


[解决办法]
把日期列你转化成日期类型不就成了吗?

或者字符串 yyyy-MM-dd 统格式不就成了吗?
[解决办法]
很简单,dataTable本身就自带排序,排序好后在绑定数据源,一切就ok了:如下
DataRow[] searchRows = dataTable.Select(searchString, "CreatTime desc");

记得给我满分。
[解决办法]
DataTable sourceTable = new DataTable();//将DataTable清空
sourceTable = tableStruct();//给DataTable的行赋值
foreach (DataRow searchRow in searchRows)
{
sourceTable.ImportRow(searchRow);
}
这里是插入新表,你绑定新表就可以了,也就是sourceTable这张表。
[解决办法]
还是那句话,满分。
[解决办法]


引用:
很简单,dataTable本身就自带排序,排序好后在绑定数据源,一切就ok了:如下
DataRow[] searchRows = dataTable.Select(searchString, "CreatTime desc");

记得给我满分。



排序其它可以更简单

DataView dv = dt.DefaultView;
dv.Sort ="日期字段 Asc";
dt = dv.ToTable();


其实楼主意思是日期被当做文本来排序,并不是需要排序方法,所以

要解决楼主的问题,是用NPOI读取日期列的时间进行转为DateTime格式
或者统一yyyy-MM-dd这种格式,也会按日期大小来显示的。


读书人网 >C#

热点推荐