【问题标题】:Sort list in .asp page using vbscript使用 vbscript 对 .asp 页面中的列表进行排序
【发布时间】:2013-05-01 11:36:49
【问题描述】:

我添加了三个单选按钮,我希望这些按钮对显示在 asp 经典页面上的数据列表进行排序。数据是从数据库中提取的,下面的代码是我到目前为止完成此排序的代码,但我无法完成它。首先,我想获得一个 onSelect 提交选项,它将刷新页面或列表(刷新列表会更好),并根据用户选择的顺序对列表进行相应的排序。

单选按钮的代码

<form method=get action=featuredvehicle.asp>
  <input type="radio" name="sort" value="make">Make<br>
  <input type="radio" name="sort" value="model">Model<br>
  <input type="radio" name="sort" value="model_year">Model Year
</form>

从单选按钮获取值的代码

<%
Dim strSQL1
Dim OrderList
OrderList = Request.QueryString("sort")
If OrderList = "" Then
strSQL1 = "SELECT * FROM featuredvehicles ORDER by make, model, model_year asc;"
ElseIf OrderList = make THEN
strSQL1 = "SELECT * FROM featuredvehicles ORDER by make, model, model_year asc;"
ElseIf OrderList = model THEN
strSQL1 = "SELECT * FROM featuredvehicles ORDER by model, model, model_year asc;"
rsLogbook.Open strSQL1, adoCon
ElseIf OrderList = model_year THEN
strSQL1 = "SELECT * FROM featuredvehicles ORDER by model_year, make, model asc;"
END IF
rsLogbook.Open strSQL1, adoCon
%>

列出数据库列表的代码。

<blockquote>

<% rsLogbook.Movefirst
do while not rsLogbook.EOF %>  
    <p align="left" style="margin-top: 0; margin-bottom: 0"><font face="Tahoma" size="2" color="#5A87B4">
    <img border="0" src="images/obdkey_icon.gif"><a href="http://websitelink.com?vehicle=<%Response.Write(rsLogbook("id"))%>">
    <%=rsLogbook("make")%>&nbsp;<%=rsLogbook("model")%>&nbsp;<%=rsLogbook("model_year")%></a>
       <%Response.Write("<br />") %>
<% rsLogbook.MoveNext%></font></p>
<%loop %>  
</blockquote>

再一次,我想做的是

  1. 单选按钮有一个选择提交选项
  2. 获取从单选按钮中选择的值并对列表进行排序 相应地(通过刷新列表或任何其他必要的方式)

【问题讨论】:

    标签: forms sorting asp-classic vbscript radio-button


    【解决方案1】:

    我建议进行查询并列出单个代码块。连接您的输出子字符串和记录字段,然后使用单个 response.write 指令写入整行。

    <blockquote>
    <%
    Dim strSQL1
    Dim OrderList
    OrderList = Request.QueryString("sort")
    strSQL1 = "SELECT * FROM featuredvehicles ORDER BY "
    Select Case OrderList
      Case "", make   : strSQL1 = strSQL1 & "make, model, model_year ASC;"
      Case model      : strSQL1 = strSQL1 & "model, make, model_year ASC;"
      Case model_year : strSQL1 = strSQL1 & "model_year, make, model ASC;"
    End Select
    rsLogbook.Open strSQL1, adoCon
    
    rsLogbook.Movefirst
    do while not rsLogbook.EOF
      response.write "<p align=""left"" style=""margin-top: 0; margin-bottom: 0""><font face=""Tahoma"" size=""2"" color=""#5A87B42"">" _
        & "<img border=""0"" src=""images/obdkey_icon.gif""><a href=""http://websitelink.com?vehicle=" & rsLogbook("id") & """>" _
        & rsLogbook("make") & "&nbsp;" & rsLogbook("model") & "&nbsp;" & rsLogbook("model_year") & "</a><br /></font></p>"
      rsLogbook.MoveNext</font></p>
    loop
    %>
    </blockquote>
    

    也就是说,如果您的数据不经常更改并且您只是希望您的用户能够动态更改结果集的顺序,您不应该对数据库运行重复查询(使用不同的 @987654324 @ 子句)。这会给 Web 服务器和数据库带来过多的负载。

    在这种情况下,最好只检索一次结果集(无序或使用默认顺序)并使用某些客户端 JavaScript 框架对结果进行任何后续(重新)排序(例如jQuery )。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多