Silverlight调用自定义的Web Service从数据库获取数据进行页面绑定

简介:     Silverlight调用WebService只能使用异步方式调用。所谓异步方式调用就是让调用方法的主线程不必同步等待在这个函数调用上,从而允许主线程继续执行它下面的代码。

    Silverlight调用WebService只能使用异步方式调用。所谓异步方式调用就是让调用方法的主线程不必同步等待在这个函数调用上,从而允许主线程继续执行它下面的代码。

 

    Silverlight调用自定义的WebService分为四个步骤:

 

   (1)、创建自定义的WebService

 

   (2)、实现WebService

 

   (3)、在Silverlight项目中添加服务引用

 

   (4)、使用异步方式调用WebService

 

下面举例介绍:

    比如说在MSSQL2000中建立一个名为SilverlightDB的数据库,里面包含一张表Product,里面有2个字段Name和Price,举例说明字段就随便用两个意思意思下。

 

    在Web.Config文件中配置数据库连接字符串

   <appSettings>
    <add key="ConnectionString" value="Data Source=.;uid=sa;pwd=111111;Database=SilverlightDB"/>
  </appSettings>

 

  接着定义一个和Product表对应的实体类Product.cs

  [Serializable]
    public class Product
    {
        public string Name { get; set; }
        public double Price { get; set; }
    }

 

  再接着是添加一个Web服务,文件名为ProductService.asmx

  在其中添加一个获取产品列表的方法GetAllProduct

         [WebMethod]
        public List<Product> GetAllProduct()
        {
            List<Product> products= new List<Product>();
            //这里是从数据库获取数据,方式可以是ADO.NET、LINQ to SQL或者是ADO.NET Entity Framework,以下是用最简单的ADO.NET来实现的
            string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                string strSQL = "select * from Product";
                SqlCommand cmd = new SqlCommand(strSQL, con);
                SqlDataReader data = cmd.ExecuteReader();
                while (data.Read())
                {
                    Product product = new Product();
                    product.Name = data["Name"].ToString();
                    product.Price = double.Parse(data["Price"].ToString());
                    products.Add(product);
                }
            }
            return products;
        }

 

   前台显示页面MainPage.xaml中添加一个ListBox用于显示数据

   <ListBox x:Name="myBooks" Margin="101,144,158,124">
   <ListBox.ItemTemplate>
    <DataTemplate>
     <StackPanel>
      <TextBlock Text="{Binding Name}"></TextBlock>
      <TextBlock Text="{Binding Price}"></TextBlock>
      <TextBlock Text="---------------------------------------------------------------"></TextBlock>
     </StackPanel>
    </DataTemplate>
   </ListBox.ItemTemplate>
  </ListBox>

 

 在MainPage.xaml.cs文件中编写调用WebService的代码进行数据绑定

private void LayoutRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
           // TODO: Add event handler implementation here.
            ProductServiceReference.ProductServiceSoapClient client = new NetworkSample.ProductServiceReference.ProductServiceSoapClient();
            //注册调用成功事件
            client.GetAllProductCompleted += new EventHandler<NetworkSample.ProductServiceReference.GetAllProductCompletedEventArgs>(OnGetAllProductCompleted);
            client.GetAllProductAsync();
        }

 

        private void OnGetAllProductCompleted(object sender, NetworkSample.ProductServiceReference.GetAllProductCompletedEventArgs e)
        {
            //检测调用是否成功
            if (e.Error != null)
            {
                return;
            }
            myBooks.ItemsSource = e.Result;
        }

 

至此,一个Silverlight调用自定义的WebService的案例就做好了。

相关文章
|
1月前
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
55 1
|
1月前
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
|
1月前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
19天前
|
NoSQL 关系型数据库 MySQL
AWS Database Migration Service 助力数据库搬迁
AWS Database Migration Service 助力数据库搬迁
|
3月前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
149 1
|
2月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
52 0
|
3月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
105 4
|
3月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
46 0
|
3月前
|
数据库 开发者 Python
【绝技揭秘】如何用Web2py玩转数据库?打造数据驱动Web应用的五大绝招!
【8月更文挑战第31天】本文通过具体示例介绍如何使用Web2py这款强大的Python Web框架进行数据库操作,创建数据驱动的Web应用。从创建应用、定义数据库模型到实现CRUD操作,逐步演示了如何构建一个简单的博客系统,包括文章列表页和详情页,并提供表单让用户创建新文章。通过本文,你将学会利用Web2py简化数据库交互,提升开发效率。
33 0