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的案例就做好了。

相关文章
|
2月前
|
前端开发 JavaScript Python
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
在前后端分离的Web应用开发模式中,如何实现前后端之间的实时数据交换成为了一个重要议题。传统的轮询或长轮询方式在实时性、资源消耗和服务器压力方面存在明显不足,而WebSocket技术的出现则为这一问题提供了优雅的解决方案。本文将通过实战案例,详细介绍如何在Python Web应用中运用WebSocket技术,实现前后端之间的实时数据交换。
94 0
|
4月前
|
JSON 前端开发 JavaScript
|
21天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
36 3
|
2月前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
105 0
|
2月前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
70 0
|
3月前
|
开发框架 JSON 缓存
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
在数字化浪潮推动下,RESTful API成为Web开发中不可或缺的部分。本文详细介绍了在Python环境下如何设计并实现高效、可扩展的RESTful API,涵盖框架选择、资源定义、HTTP方法应用及响应格式设计等内容,并提供了基于Flask的示例代码。此外,还讨论了版本控制、文档化、安全性和性能优化等最佳实践,帮助开发者实现更流畅的数据交互体验。
91 1
|
4月前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
200 1
|
4月前
|
数据采集 定位技术 API
为什么要选住宅IP代理抓取Web数据?
在数据采集和Web爬虫领域,选择合适的IP代理至关重要。住宅IP代理因高隐蔽性和真实性、更好的访问成功率、能绕过反爬虫策略、多样化的地理位置、适应性和灵活性以及合法合规等优势,成为许多数据抓取项目的首选。使用住宅IP代理可提高数据抓取效率,降低被封禁风险,同时需遵守法律法规,确保活动的合法性与合规性。
|
4月前
|
存储 缓存 监控
Memcached玩转Web性能:一致性哈希、数据持久化,一文全掌握!
【8月更文挑战第24天】Memcached是一款高性能的分布式内存对象缓存系统,它通过在网络中存储数据并使用简单的键值对机制来提高动态Web应用的性能。它可以显著减少数据库查询次数,进而减轻数据库负载并加快响应时间。为了最大化利用Memcached的优势,建议合理配置内存使用、采用一致性哈希策略、实施数据持久化措施,并持续监控系统健康状况。提供的示例代码展示了如何使用Java创建客户端、添加和获取数据。
48 1
|
4月前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
274 1