欢迎光临
我们一直在努力

不刷新页面查询数据库中数据的方法--XML方法-ASP教程,数据库相关

建站超值云服务器,限时71元/月

  我在作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>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 不刷新页面查询数据库中数据的方法--XML方法-ASP教程,数据库相关
分享到: 更多 (0)