2013-05-01 26 views
0

我已經添加了三個單選按鈕,我希望這些按鈕可以對asp經典頁面上顯示的數據列表進行排序。數據從數據庫中剔除,下面的代碼是我到目前爲止已完成的排序,但我無法完成它。首先,我想獲得一個onSelect提交選項,它將刷新頁面或列表(刷新列表會更好),並根據用戶選擇的順序對列表進行相應排序。使用vbscript在.asp頁面中排序列表

爲單選按鈕

<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. 抓住從單選按鈕選擇的值上選擇提交選項和排序列表 相應地(通過刷新列表或任何其他必要的方式)

回答

0

我會建議做查詢和l只有一個代碼塊。將輸出子串和記錄字段連接起來,然後用一條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> 

對數據庫也就是說,如果你的數據不是很頻繁變化,你只是希望用戶能夠更改結果上飛設置的順序,你不應該運行重複查詢(與不同的ORDER BY條款)。這會對Web服務器和數據庫造成不必要的負擔。

在這種情況下,最好是隻檢索一次結果集(無論是無序的還是默認的順序),並用某些客戶端JavaScript框架對結果進行後續(重新)排序(例如jQuery) 。