惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
V
V2EX
B
Blog RSS Feed
有赞技术团队
有赞技术团队
博客园 - Franky
美团技术团队
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
云风的 BLOG
云风的 BLOG
L
LangChain Blog
GbyAI
GbyAI
The Cloudflare Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
The Register - Security
The Register - Security
大猫的无限游戏
大猫的无限游戏
D
Docker
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
博客园_首页
A
About on SuperTechFans
J
Java Code Geeks
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
G
Google Developers Blog
小众软件
小众软件
博客园 - 叶小钗
WordPress大学
WordPress大学
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
F
Full Disclosure
Jina AI
Jina AI
H
Help Net Security

博客园 - zsww

水晶报表使用经验谈5--使用格式化编辑器 推荐一个好工具: 可以集成在Microsoft Outlook里的“新闻阅读器” NewsGator 水晶报表使用经验谈4--使用视图解决在报表中的多表关联问题 最新体验Visual Studio 2005 Beta 1 to 管理员:网站的“技术区文章列表RSS”有问题 我用GUSH连不上! 微软发布SQL Server 2000 Reporting Services Service Pack 1 使用ASP.NET页面创建可视的UI,在客户机上实例化MSXML分析器的页面从中间层组件取出XML数据、操作并显示 并有问题请高手解决 SQL Reporting Services 困惑的解决 直接传递参数并用ReportViewer来呈现报表 我的困惑 关于SQL Reporting Services 微软的服务! SQL Reporting Services 使用感受 SQL Reporting Services 简介 微软的报表工具 SQL Server 2000 Reporting Services 评估版 进入博客园首页 怎么出现这种错误?不知其他人有没有??? 两三天没来 真的很热闹啊 感觉这里越来越好了! 水晶报表使用经验谈3--在报表中显示多个表的字段(通过表关联) 水晶报表使用经验谈2--使用sql语句直接生成dataset做为报表的数据源! 水晶报表使用经验谈1--建立水晶报表第一步及编译最易出现错误的解决方法及报表转换成pdf文档进行打印方法 aspx论坛页面原型发布 请大家多提意见!
通过Web服务外置XML,将Web服务用作数据源,Web服务传递的内容是XML,将由Web服务返回的XML文档,以便可以将它加载到客户机上的XML分析器。
zsww · 2004-06-15 · via 博客园 - zsww

        与上一个例子不同的地方在于数据访问组件是一个以Web服务形式实现的中间层,提供一个GetCustomers方法检索数据库中的数据,而且通过HTTP以标准的SOAP提供给客户机。

1.具体实现(代码仅供参考)
  中间层 customer-data.asmx 实现Web服务
  
  <%@WebService Language="C#" Class="Customer"%>
  using System;
  using System.Data;
  using System.Web.Services; //导入Web服务命名空间
  using System.Configuration;

  [WebService(Description="Customer Service",Namespace="http://127.0.0.1/webservices/4923/customer")]
 
  public class CustomerOrders
  {
    [WebMethod] public DataSet GetCustomers(String strCustID, String strCustName) //使用[WebMethod]特性表明GetCustomers方法通过Web服务可用,没有声明[WebMethod]特性的公共函数对客户机通过Web服务是不可用的。   
    {
       //根据客户ID或客户姓名检索数据并返回DataSet 
    }
  }
 
  表示层:
  (1)使用Web服务行为组件(webservices.htc),将其用于IE中来处理Web服务。关于webservices.htc的介绍及下载可到 http://msdn.microsoft.com/workshop/author/webservice/webservice.asp
       <div style="behavior:url(../../global/webservice.htc)" id="htcWService">
        View Customer - Select Customer
       </div> 

  (2)用javascript声明一个全局变量保存MSXML分析起实例,创建一个openWebService函数打开Web服务 一旦webservice.htc行为插入页面,就可以使用它来访问Web服务
       <body onload="openWebService()">
             
       var objXMLData;
       function openWebService() {
          htcWService.useService("customer-data.asmx?WSDL","CustData"); //使用行为的useService方法打开Web Service,通过加载服务器的WSDL文档做到用户能够通过WSDL追加到查询字符串来制定它,同时提供一个“友好名称”CustData,将在代码中使用它来引用Web服务
          var iCallID = htcWService.CustData.callService(dataLoaded, "GetCustomers", "", ""); //指定callService方法所需的参数:事件处理程序名,调用的方法名以及此方法的参数,为了得到所有的客户,使用了2个空字符串作为参数         
       }
       
       function dataLoaded(objResult) {
         if(objResult.error) { //检查是否出错
            var strErrorCode = objResult.errorDetail.code;
            var strErrorMsg = objResult.errorDetail.string;
            var strErrorRaw = objResult.errorDetail.raw;  
         }
         else { //如果没有出错,则将返回的数据转换成MSXML分析器的一个实例
            try {
               objXMLData = new ActiveXObject('MSXML2.FreeThreadedDOMDocument');
            }
            catch(e) {}   
           if (objXMLData == null) {
     
               return;
           }  
           objXMLData.onreadystatechange = changeFunction;   
           objXMLData.validateOnParse = true;
           objXMLData.async = true;  
           objXMLData.loadXML(objResult.raw.xml); //从Web服务加载SOAP文档
         }
       }
      
       function changeFunction()参考上个例子
      
   (3)查找并显示顾客详细资料:参考上个例子