ASP學習:不刷新頁面篩選數據庫中的數據
發表時間:2023-08-18 來源:明輝站整理相關軟件相關文章人氣:
[摘要]我在作asp程序時經常遇到這種情況:將數據庫中的數據(如所有雇員名)列在列表框中,程序要求進行選擇其中一項或多項提交到下一個頁面。但麻煩的是如果數據(如雇員)過多,會給客戶的選擇帶來麻煩--要從很長...
我在作asp程序時經常遇到這種情況:
將數據庫中的數據(如所有雇員名)列在列表框中,程序要求進行選擇其中一項或多項提交到下一個頁面。
但麻煩的是如果數據(如雇員)過多,會給客戶的選擇帶來麻煩--要從很長的列表中進行數據定位。最好的解決方法是用戶在選擇前采用模糊查詢的方式進行數據定位,準確找出需要選擇的雇員名,再選擇、提交。問題出現在我們程序員面前:如何不刷新頁面篩選從數據庫中篩選數據。本人的方法有兩種:
1、采用雙列表框的方法
2、采用XML方法
本文主要介紹第一種方法:采用雙列表框的方法
編程思想:
采用雙列表框,其中一個為隱藏狀態,另一個是顯示給用戶看的列表框。
程序開始將數據(如雇員姓名)分別裝進兩個列表框中,當用戶需要篩選雇員時首先將顯示列表框清空,再更據篩選條件將數據從隱藏列表框裝入顯示列表框中。
這樣即可實現不刷新頁面篩選數據庫中的內容。
實現:
下面以SQLSERVER為例,篩選NorthWind庫中Employees表的雇員名進行說明。
<html>
<head>
<title>不刷新頁面查詢的方法</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<scriptlanguage="javascript">
functionsearch_onclick(){
//得到篩選雇員的名字
searchtext=window.searchContent.value;
//首先移除在所有查詢結果列表中的選項
j=searchObj.length;
for(i=j-1;i>=0;i--)
{
searchObj.remove(i);
}
if(searchtext!=""){
//顯示符合篩選條件的雇員
j=searchSource.length;
for(i=0;i<j;i++){
searchsource=searchSource.options(i).text;
k=searchsource.indexOf(searchtext);
if(k!=-1){
option1=document.createElement("option");
option1.text=searchsource;
option1.value=searchSource.options(i).value;
searchObj.add(option1);
}
}
}
else{
//如果沒有輸入查詢條件則顯示所有雇員
j=searchSource.length;
for(i=0;i<j;i++){
searchsource=searchSource.options(i).text;
option1=document.createElement("option");
option1.text=searchsource;
option1.value=searchSource.options(i).value;
searchObj.add(option1);
}
}
}
</script>
<bodybgcolor="#FFFFFF"text="#000000">
<%
servername="wyb"'服務器名
user="sa"'用戶名
pw=""'用戶密碼
databasename="northwind"'數據庫名
setconn=server.CreateObject("adodb.connection")
conn.Open"DRIVER=SQLServer;SERVER="&servername&";UID="&user&";pwd="&pw&";DATABASE="&databasename
setrs=server.CreateObject("adodb.recordset")
sql="Selectemployeeid,lastnamefromemployeesorderbyemployeeid"
rs.Opensql,conn%>
<tablewidth="80%"border="1">
<tr>
<td>
<inputtype="text"name="searchContent">
<inputtype="button"name="Button"value="查詢"onclick="
javascript:returnsearch_onclick()">
</td>
</tr>
<tr>
<td>查詢結果<br>
<selectname="searchObj"size="10">
<%dowhilenotrs.eof%>
<optionvalue="<%=rs("employeeid")%>"><%=rs("lastname")%></option>
<%rs.movenext
loop
%>
</select>
<selectname="searchSource"size="10"style="display:none">
<%
rs.movefirst
dowhilenotrs.eof%>
<optionvalue="<%=rs("employeeid")%>"><%=rs("lastname")%></option>
<%rs.movenext
loop
%>
</select>
</td>
</tr>
</table>
<%rs.close
setrs=nothing
%>
</body>
</html>(出處:PConline)