快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

不刷新页面查询数据库中数据的方式-XML方式

 我在作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脚本
    微笑服务 优质保证 索取样品