如何按单击状态对表进行升序和降序排序?MYSQL/ColdFusion
我有一个表格,我可以点击标题,按不同的列对整个表格进行排序。 我想合并一些布尔状态,这样我就可以单击一次以按该列升序对表进行排序,然后再次单击以使其降序 这是我的密码:如何按单击状态对表进行升序和降序排序?MYSQL/ColdFusion,mysql,coldfusion,html-table,click,Mysql,Coldfusion,Html Table,Click,我有一个表格,我可以点击标题,按不同的列对整个表格进行排序。 我想合并一些布尔状态,这样我就可以单击一次以按该列升序对表进行排序,然后再次单击以使其降序 这是我的密码: <th><A HREF="thispage.cfm?sorter=creationDate">Creation Date</A> </th> <cfif IsDefined("URL.sorter")> <cfquery datasource="Pad"
<th><A HREF="thispage.cfm?sorter=creationDate">Creation Date</A> </th>
<cfif IsDefined("URL.sorter")>
<cfquery datasource="Pad" name="One">
select * from meeting
ORDER BY #URL.sorter# DESC
</cfquery>
<cfelse>
<cfquery datasource="Pad" name="One">
select * from meeting
ORDER BY contactName
</cfquery>
</cfif>
我相信它可以通过使用cfset创建一个布尔变量来实现,然后在单击表头并在第一次查询中将一个变量状态分配给ASC,另一个变量状态分配给DESC时改变该变量状态。我只是不知道如何实现它。如果您愿意,可以使用jQuery插件/javascript很好地实现它。见: 但是要用老式的方式来做,你需要在你的网页中添加网址的方向。 如果您只处理一个标题,您可以简单地执行以下操作:
<cfif structKeyExists(url, "sortOrder") and url.sortOrder eq "ASC">
<url.sortOrder = "DESC">
<cfelse>
<url.sortOrder = "ASC">
</cfif>
<cfoutput>
<A HREF="thispage.cfm?sorter=creationDate&sortOrder=#url.sortOrder#">Creation Date</A>
</cfoutput>
如果使用多个标题,还需要检查当前列的方向
<cfif (structKeyExists(url,"sorter") and url.sorter eq "{thisColumn}")>
and (structKeyExists(url, "sortOrder") and url.sortOrder eq "ASC")>
<url.sortOrder = "DESC">
<cfelse>
<url.sortOrder = "ASC">
</cfif>
你可能应该把它放进一个函数中,传递你正在检查的列的值,这样你就不会在每次检查之前一遍又一遍地做同样的事情,不要重复你自己
<A HREF="thispage.cfm?sorter=creationDate&sortOrder=#sortMe({thisColumn})#">{thisColumn}</A>
最后,将方向添加到查询中
<cfquery datasource="Pad" name="One">
select
columnName1
, columnName2
, columnName3
from
meeting
ORDER BY
#URL.sorter# <cfif structKeyExists(url,"sortOrder")>#url.sortOrder#</cfif>
</cfquery>
我认为您最好使用javascript或jquery来实现这一点。事实上,看看cfgrid。它可能已经具有此功能。我不确定,因为我从未使用过它。ORDER BY URL.sorter这是一个sql注入风险。在sql查询中直接使用任何用户提供的输入之前,请始终验证该输入。