如何通过单击状态对表进行升序和降序排序? MYSQL / ColdFusion的

时间:2013-02-15 09:35:54

标签: mysql coldfusion html-table click

我有一个表格,我可以点击标题按不同的列对整个表格进行排序。 我想合并一些布尔状态,以便我可以单击一次按该列升序排序,然后再次单击以使其降序。

这是我的代码:

 <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时更改该变量状态来实现。我只是不确定如何实现它。

1 个答案:

答案 0 :(得分:2)

如果你想,你可以用jQuery插件/ javascript做得很好。请参阅:Choosing a jQuery datagrid plugin?

但要以旧式方式进行,您可以在<th>中为您的网址添加方向。 如果您只处理一个标题,则可以执行以下操作:

<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>

你应该把它放到一个函数中,传递你正在检查的列的值,这样你就不会在每个<th>之前反复出现同样的事情,干(不要重复自己)

<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>