我在作asp程序时经常遇到这种情况将数据库中的数据(如所有雇员名)列在列表框中程序要求进行选择其中一项或多项提交到下一个页面
但麻烦的是如果数据(如雇员)过多会给客户的选择带来麻烦——要从很长的列表中进行数据定位最好的解决方法是用户在选择前采用模糊查询的方式进行数据定位准确找出需要选择的雇员名再选择提交
问题出现在我们程序员面前如何不刷新页面筛选从数据库中筛选数据本人的方法有两种采用双列表框的方法采用XML方法本文主要介绍第一种方法采用双列表框的方法编程思想采用双列表框其中一个为隐藏状态另一个是显示给用户看的列表框
程序开始将数据(如雇员姓名)分别装进两个列表框中当用户需要筛选雇员时首先将显示列表框清空再更据筛选条件将数据从隐藏列表框装入显示列表框中
这样即可实现不刷新页面筛选数据库中的内容
实现下面以SQLSERVER为例筛选NorthWind库中Employees表的雇员名进行说明<html>
<head>
<title>不刷新页面查询的方法</title>
<metahttpequiv=ContentTypecontent=text/html;charset=gb>
</head>
<scriptlanguage=javascript>
functionsearch_onclick(){
//得到筛选雇员的名字
searchtext=windowsearchContentvalue;
//首先移除在所有查询结果列表中的选项
j=searchObjlength;
for(i=j;i>=;i)
{
searchObjremove(i);
}
if(searchtext!=){
//显示符合筛选条件的雇员
j=searchSourcelength;
for(i=;i<j;i++){
searchsource=searchSourceoptions(i)text;
k=searchsourceindexOf(searchtext);
if(k!=){
option=documentcreateElement(option);
optiontext=searchsource;
optionvalue=searchSourceoptions(i)value;
searchObjadd(option);
}
}
}
else{
//如果没有输入查询条件则显示所有雇员
j=searchSourcelength;
for(i=;i<j;i++){
searchsource=searchSourceoptions(i)text;
option=documentcreateElement(option);
optiontext=searchsource;
optionvalue=searchSourceoptions(i)value;
searchObjadd(option);
}
}
}
</script>
<bodybgcolor=#FFFFFFtext=#>
<%
servername=wyb服务器名
user=sa用户名
pw=用户密码
databasename=northwind数据库名
setconn=serverCreateObject(nnection)
conn
Open
DRIVER=SQLServer;SERVER=
&servername&
;UID=
&user&
;pwd=
&pw&
;DATABASE=
&databasename
setrs=serverCreateObject(adodbrecordset)
sql=Selectemployeeidlastnamefromemployeesorderbyemployeeid
rsOpensqlconn%>
<tablewidth=%border=>
<tr>
<td>
<inputtype=textname=searchContent>
<inputtype=buttonname=Buttonvalue=查询onclick=javascript:returnsearch_onclick()>
</td>
</tr>
<tr>
<td>查询结果<br>
<selectname=searchObjsize=>
<%dowhilenotrseof%>
<optionvalue=<%=rs(employeeid)%>><%=rs(lastname)%></option>
<%rsmovenext
loop
%>
</select>
<selectname=searchSourcesize=>
<%
rsmovefirst
dowhilenotrseof%>
<optionvalue=<%=rs(employeeid)%>><%=rs(lastname)%></option>
<%rsmovenext
loop
%>
</select>
</td>
</tr>
</table>
<%rsclose
setrs=nothing
%>
</body>
</html>