TCM*_*TCM 0 c# sql asp.net gridview sqldatasource
我有我的SqlDataSource控件.它基本上有UpdateCommand和SelectCommand.我的gridview绑定到这个sqldatasource控件.我的SelectCommand是:
Select Username, Status from Users Order by LastLoginTime desc
Run Code Online (Sandbox Code Playgroud)
我的桌子是这样的:
ABC IN PROGESS somedate
DEF COMPLETE somedate
PQR PENDING somedate
JLM COMPLETE somedate
LKM IN PROGESS somedate
Run Code Online (Sandbox Code Playgroud)
当前查询结果按lastlogintime排序(即somedate).但我希望我的结果按第二列排序(比如这个列名是Status).我希望对记录进行排序,以便首先显示所有用户的整体状态为IN PROGRESS,然后显示PENDING然后完成.正如你所说,这不是一个简单的order by子句.
如何使用我的SqlDataSource控件以这种方式排序?
您应该使用自定义排序次序使用CASE的SQL.试试这个
SELECT Name, Status FROM UsersOrder ORDER BY CASE Status
WHEN 'IN PROGESS' THEN 1
WHEN 'PENDING' THEN 2
WHEN 'COMPLETE' THEN 3
ELSE 99
END
Run Code Online (Sandbox Code Playgroud)
所以实际上你的SelectCommand将是一个可怕的单行.:)
SelectCommand="SELECT Name, Status FROM UsersOrder ORDER BY CASE Status WHEN 'IN PROGESS' THEN 1 WHEN 'PENDING' THEN 2 WHEN 'COMPLETE' THEN 3 ELSE 99 END"
Run Code Online (Sandbox Code Playgroud)
我担心这是唯一的解决方案.