|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
我在作asp程序时常常碰到这种情况: 将数据库中的数据(如所有雇员名)列在列表框中,程序要求进行选择其中一项或多项提交到下一个页面。 但麻烦的是假如数据(如雇员)过多,会给客户的选择带来麻烦--要从很长的列表中进行数据定位。最好的解决方式是用户在选择前采用模糊查询的方法进行数据定位,正确找出需要选择的雇员名,再选择、提交。 问题出现在我们程序员面前:如何不刷新页面筛选从数据库中筛选数据。本人的方式有两种: 1、采用双列表框的方式 2、采用XML方式 本文主要介绍第二种方式:采用XML的解决方式 编程思想: 首先将放入需要放入列表框中的数据从数据库下载到XML数据岛中; 使用javascript将查询条件与数据岛中每一项进行对比,把符合条件的放入列表框中; 这样即可实现不刷新页面筛选数据库中的内容。 其缺点是不具备实时性。 实现: 下面以SQL SERVER为例,筛选NorthWind库中Employees表的雇员名进行说明。 <html> <head> <title>不刷新页面查询的方式</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <script language="javascript"> <!--初始化,将数据岛中数据装入列表框中--> function loadinsel() { var employeeid,employeelastname; //分别存放雇员ID和雇员名字 root=document.all.xmlemployees.childNodes.item(0); //返回第一个元素--employee for(i=0;i<root.childNodes.length;i++){ getnode=root.childNodes(i); //得到empolyee的一个子节点 employeeid=root.childNodes(i).getAttribute("emid");//得到雇员ID for(j=0;j<getnode.childNodes.length;j++){ employeeinf=getnode.childNodes(j).nodeName; if(employeeinf=="lastname"){ employeelastname=getnode.childNodes(j).text; //得到雇员名字 } } //将得到的employeeid和employeelastname写进select中 if(employeeid!="" && employeelastname!=""){ option1=document.createElement("option"); option1.text=employeelastname; option1.value=employeeid; employeelist.add(option1); } } } <!--初始化,从数据岛中检索数据,装入列表框中--> function findemployee(){ var employeelastname,employeeid; //分别存放雇员名字和雇员ID employeelastname=""; employeeid=""; findtext=window.findcontent.value; //得到检索条件 //清除列表框 employeecount=employeelist.length for(i=employeecount-1;i>=0;i--){ employeelist.remove(i); } root=window.xmlemployees.childNodes(0); for(i=0;i<root.childNodes.length;i++){ getitem=root.childNodes(i); //得到empolyee的一个子节点 employeeid=root.childNodes(i).getAttribute("emid"); //得到雇员ID for(j=0;j<getitem.childNodes.length;j++){ if(getitem.childNodes(j).nodeName=="lastname"){ employee_temp=getitem.childNodes(j).text; if(employee_temp.indexOf(findtext)!=-1){ //查找匹配项 employeelastname=employee_temp; //找到名字匹配的雇员 } } } //将符合条件的雇员信息写进select中 if(employeeid!="" && employeelastname!=""){ option1=document.createElement("option"); option1.value=employeeid; option1.text=employeelastname; window.employeelist.add(option1); employeeid=""; employeelastname=""; } } } </script> <body bgcolor="#FFFFFF" text="#000000" onload="javascript:loadinsel()"> <table width="80%" border="1"> <tr> <td> 请输入查询条件: <input type="text" name="findcontent"> <input type="button" name="Submit" value="查找" onclick="javascript:findemployee()"> </td> </tr> <tr> <td> 查询结果: <select name="employeelist"> </select> </td> </tr> </table> <?xml version="1.0" encoding="gb2312"?> <% servername="wyb" \\\'服务器名 user="sa" \\\'用户名 pw="" \\\'用户密码 databasename="northwind" \\\'数据库名 set conn=server.CreateObject("adodb.connection") conn.Open "DRIVER=SQL Server;SERVER="&servername&";UID="&user&";pwd="&pw&";DATABASE="&databasename set rs=server.CreateObject("adodb.recordset") sql="Select employeeid,lastname from employees order by employeeid" rs.Open sql,conn%> <!--将数据库中信息放入数据岛中--> <xml id="xmlemployees"> <employee> <%do while not rs.eof%> <employeeitem emid="<%=rs("employeeid")%>"> <lastname><%=rs("lastname")%></lastname> </employeeitem> <%rs.movenext%> <%loop%> </employee> </xml> <%rs.close set rs=nothing %> </body> </html> 返回类别: 教程 上一教程: 让自定义文件下载支持断点续传(HTTP_RANGE ADODB.STREAM) 下一教程: 利用ASP打造网站论坛DIY -6 您可以阅读与"不刷新页面查询数据库中数据的方式-XML方式"相关的教程: · 不刷新页面筛选数据库中的数据 · ASP中查询数据库记录写入XML文件示例 · 利用XML不离开页面刷新数据 · 用ADO的COMMAND对象实现对WEB数据库动态数据查询的方式 · 在不刷新页面的情况下调用远程ASP脚本 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |