2

データでいっぱいのテーブルがあり、id(varchar2)、description(varchar2)、diameter(number)、crown(number)、および lockout(single char) の 5 つの列があります。

このテーブルは、ASP-classic を使用して作成された Web アプリケーションに組み込まれています。テーブルの上部には、各列の名前を持つヘッダーを持つ行があります。ユーザーが見出しをクリックすると、テーブルが再構築され、前の方向に応じて、クリックした列で昇順または降順で並べ替えられます (Web サイトの典型的な並べ替えボタンのように)。

私がしたいことは次のとおりです。ユーザーがid 以外の行をクリックすると、クリックした行と id並べ替えます。たとえば、説明に同じ値を持つ何百ものレコードが存在する可能性があるためです。

これが、現在の並べ替え方法を決定するコードのスニペットです。

if Len(strSort) > 0 then
    sqlQry = sqlQry + " ORDER BY " & strSort
    if intSortDir <> "1" then
        sqlQry = sqlQry + " DESC"
    end if
end if

strSortasp クエリ URL から取得され、クリックされたときに URL に追加されます。 intSortDir基本的には 0 に初期化され、ユーザーが見出しをクリックすると切り替わります。

要約すると、私の質問は、一度に 2 つの列で並べ替えるにはどうすればよいかということです。クリックされた列が主な並べ替えになります。

私はこれを試しました:

if Len(strSort) > 0 then
    if strSort = "id" then 
        sqlQry = sqlQry + " ORDER BY " & strSort
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    else
        sqlQry = sqlQry + " ORDER BY " & strSort & ",id"
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    end if
end if

そして、それは私が望んでいた方法で並べ替えられましたが、並べ替えの方向を切り替えることはできませんでした.

4

1 に答える 1

1
if Len(strSort) > 0 then
    sqlQry = sqlQry + " ORDER BY " & strSort 
    if intSortDir <> "1" then
        sqlQry = sqlQry + " DESC"
    end if

    if strSort <> "id" then 
        sqlQry = sqlQry + ", id"
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    end if
end if

また、ブラウザでこれらの行を並べ替えるには、javascript を使用するとよいでしょう。jQuery を使用できる場合は、それを簡単にする tablesorter() プラグインがあります。

于 2013-06-28T12:29:44.117 に答える