1

ヘッダーをクリックして、テーブル全体を異なる列で並べ替えることができるテーブルがあります。ブール値の状態を組み込んで、一度クリックしてその列の昇順でテーブルを並べ替え、もう一度クリックして降順にできるようにしたいと思います。

これが私のコードです:

 <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を使用してブール変数を作成し、テーブルヘッダーをクリックしてその変数の状態を変更し、最初のクエリで1つの変数の状態をASCに割り当て、別の変数の状態をDESCに割り当てることで実装できると思います。私はそれを実装する方法がわかりません。

4

1 に答える 1

2

必要に応じて、jQuery プラグイン/javascript を使用してかなりうまく行うことができます。参照: jQuery データグリッド プラグインの選択

しかし、昔ながらの方法でそれを行うには、<th>. ヘッダーを 1 つだけ扱っている場合は、次のように簡単に実行できます。

<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>, DRY の前に何度も同じことがないようにする必要があります (自分を繰り返さないでください)。

<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>
于 2013-02-15T11:00:01.207 に答える