5.绑定webService数据到DataGrid,设置DataGrid模板,模拟数据库数据的绑定

简介:

    根据第二节说述,我们能够从webService获取到相关的信息数据。那么我们如果要查询数据库的数据,就应该在webservice端使用 Select 语句来查询到表,然后使用DataSet的GetXml()方法,获取到相应的XML格式化数据库表数据。在本实例中,我们在webService端模拟 一串数据库表的数据。如下:

 
   
  1. <NewDataSet> 
  2.                 <Table
  3.                     <AddrName>四川</AddrName> 
  4.                     <CityName>成都</CityName> 
  5.                     <TelNum>028</TelNum> 
  6.                 </Table
  7.                 <Table
  8.                     <AddrName>广东</AddrName> 
  9.                     <CityName>广州</CityName> 
  10.                     <TelNum>020</TelNum> 
  11.                 </Table
  12.                 <Table
  13.                     <AddrName>北京</AddrName> 
  14.                     <CityName>北京</CityName> 
  15.                     <TelNum>010</TelNum> 
  16.                 </Table
  17. </NewDataSet> 

    在此XML数据中,我们可以很清晰的看出这个表包含AddrName,CityName,TelNum三个字段,然后这个表中有3行数据。

    我们在Silverlight接收到这串数据的时候,我们需要在Silverlight端声明一个实体类。这个实体类拥有 AddrName,CityName,TelNum三个属性,然后再每次实例化这个实体类,将实体类对象添加到一个实体类集合中去。这样子这个实体类对象 集合就拥有了3行数据。在这里我们首先看实体类的源代码:

 
   
  1. /// <summary> 
  2. /// 城市信息的实体类 
  3. /// </summary> 
  4. public class CityInformation 
  5.     private string _AddrName; 
  6.     private string _CityName; 
  7.     private string _TelNum; 
  8.   
  9.     public string AddrName 
  10.     { 
  11.         get { return _AddrName; } 
  12.         set { _AddrName = value; } 
  13.     } 
  14.     public string CityName 
  15.     { 
  16.         get { return _CityName; } 
  17.         set { _CityName = value; } 
  18.     } 
  19.     public string TelNum 
  20.     { 
  21.         get { return _TelNum; } 
  22.         set { _TelNum = value; } 
  23.     } 
  24.     

       在这里,我们接收到XML数据,解析,并且得到实体类对象集合的代码如下:

 
   
  1. List<CityInformation> cityList = new List<CityInformation>(); 

 
   
  1. //声明实体类集合,以保存实体类集合 
  2. using (XmlReader xReader = XmlReader.Create(new StringReader(xmlStr))) 
  3.     xReader.Read(); 
  4.     while (xReader.Read()) 
  5.     { 
  6.         try 
  7.         { 
  8.             xReader.ReadToFollowing("AddrName"); 
  9.             string addrName = xReader.ReadElementContentAsString(); 
  10.             xReader.ReadToNextSibling("CityName"); 
  11.             string cityName = xReader.ReadElementContentAsString(); 
  12.             xReader.ReadToNextSibling("TelNum"); 
  13.             string telNum = xReader.ReadElementContentAsString(); 

 
   
  1. //解析一行数据库XML的数据。 
  2. CityInformation cityInfo = new CityInformation(); 
  3. cityInfo.AddrName = addrName; 
  4. cityInfo.CityName = cityName; 
  5. cityInfo.TelNum = telNum; 
  6. cityList.Add(cityInfo); 

 
   
  1.         //实例化实体类,然后将实体类添加到实体类集合中去。 
  2.         } 
  3.         catch (Exception ex) 
  4.         { } 
  5.          
  6.     } 
  7. this.ShowCityList.ItemsSource = cityList; 
  8.   //将实体类集合绑定到DataGrid 

    另外我们在这里需要设置DataGrid的列模板,因为他自动生成的列不能满足实际项目的需要。所以我们继续看一下XAML源代码:

 
   
  1. <sdk:DataGrid HorizontalAlignment="Left"  AutoGenerateColumns="False"  Margin="28,71,0,0" Name="ShowCityList" VerticalAlignment="Top"  Height="271"  Width="324" > 
  2.             <sdk:DataGrid.Columns> 
  3.                 <sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" IsReadOnly="True" Width="108"/> 
  4.                 <sdk:DataGridTextColumn Header="城市" Binding="{Binding CityName}" IsReadOnly="True" Width="108"/> 
  5.                 <sdk:DataGridTextColumn Header="电话区号" Binding="{Binding TelNum}" IsReadOnly="True" Width="108"/> 
  6.             </sdk:DataGrid.Columns> 
  7.         </sdk:DataGrid> 

    当然在这里我们需要引入域名空间:    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    在这里我们AutoGenerateColumns="False"设置本DataGrid不自动生成列。

        <sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" IsReadOnly="True" Width="108"/>,本句中设置DataGrid列名为省会,绑定的是CityInformation实体类的AddrName属性。另外 设置了本列的默认宽度为108.

    至此,我们就将从webService获取到的数据绑定到了DataGrid。相信网上也会有很多类似的列子。在这里写出来,给需要的人看,也给初步接触Silverlight的TX看。希望能够写得简单明了一些。

       本例采用VS2010+Silverlight 4.0为开发环境。

       如需源码点击 SLReadXMLForDataGrid.rar 下载。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/821220

相关文章
|
13天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
15天前
|
关系型数据库 数据库
关系型数据库的数据完整性
关系型数据库通过一系列机制和技术手段来确保数据的完整性,从而为用户提供准确、一致和可靠的数据服务。这些措施对于保障数据的质量、满足用户需求以及维护系统的稳定运行具有重要意义。
20 5
|
10天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
28 0
|
3天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
9 0
|
9天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
10天前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之dataworks为子账号创建DataWorks访问密钥的基本步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
26 0
|
10天前
|
DataWorks 安全 数据库
DataWorks产品使用合集之在DataWorks中,使用Power BI Desktop来连接Hologres数据库需要设置白名单如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
31 2
|
11天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
11天前
|
Java 关系型数据库 MySQL
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
|
14天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式数据存储系统
传统数据库系统面临着数据安全性、可信度和去中心化等挑战,而区块链技术的兴起为解决这些问题提供了新的思路。本文介绍了一种新一代数据库技术,将区块链技术与传统的分布式数据存储系统相融合,实现了更高水平的数据安全性和可信度,以及去中心化的优势。通过结合区块链的不可篡改性和分布式存储系统的高性能,这一新型数据库技术将在未来的数据管理领域发挥重要作用。