我有我的SqlDataSource控件。它基本上有UpdateCommand和SelectCommand。我的gridview绑定到这个sqldatasource控件。我的SelectCommand是:
Select Username, Status from Users Order by LastLoginTime desc
我的桌子是这样的:
ABC IN PROGESS somedate
DEF COMPLETE somedate
PQR PENDING somedate
JLM COMPLETE somedate
LKM IN PROGESS somedate
目前查询结果按lastlogintime排序(即somedate)。但我希望我的结果按第二列排序(比如这个列名是Status)。我希望对记录进行排序,以便首先显示所有用户的整体状态为IN PROGRESS,然后显示PENDING然后完成。正如你所说,这不是一个简单的order by子句。
如何使用我的SqlDataSource控件以这种方式排序?
答案 0 :(得分:5)
您应该在SQL中使用CASE
Custom Sort Order。试试这个
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
因此,实际上你的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"
我担心这是唯一的解决方案。