2

我有一个充满数据的表,它有五列:id(varchar2)、description(varchar2)、diameter(number)、crown(number) 和 lockout(single char)

该表内置在使用 ASP-classic 制作的 webapp 中。该表在顶部有一行,其标题包含每列的名称。当用户单击标题时,表格会重建,按他们单击的列升序或降序排序,具体取决于先前的方向(如网站上的典型排序按钮)。

我想要发生的是:当用户单击除 id 以外的任何行时,按他们单击的行按 id 排序,因为例如可能有数百条具有相同描述值的记录。

这是我现在确定如何排序的代码片段。

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

strSort从 asp 查询 url 中提取,并在单击时添加到 url。 intSortDir基本上初始化为 0 并在用户单击标题时切换。

总而言之,我的问题是,我如何一次按两列排序,单击的那一列是主要排序。

我试过这个:

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