中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 综合文章
不刷新页面查询数据库中数据的方法--XML方法
作者:chengdong77 时间:2002-03-22 11:15 出处:互联网 责编:chinaitpower
              摘要:不刷新页面查询数据库中数据的方法--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>

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有