Silverlight实用窍门系列:5.绑定webService数据到DataGrid,设置DataGrid模板,模拟数据库数据的绑定【附带实例源码】

简介:

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

<NewDataSet>
                 <Table>
                     <AddrName>四川</AddrName>
                     <CityName>成都</CityName>
                     <TelNum>028</TelNum>
                 </Table>
                 <Table>
                     <AddrName>广东</AddrName>
                     <CityName>广州</CityName>
                     <TelNum>020</TelNum>
                 </Table>
                 <Table>
                     <AddrName>北京</AddrName>
                     <CityName>北京</CityName>
                     <TelNum>010</TelNum>
                 </Table>
</NewDataSet>

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

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

/// <summary>
/// 城市信息的实体类
/// </summary>
public  class  CityInformation
{
     private  string  _AddrName;
     private  string  _CityName;
     private  string  _TelNum;
 
     public  string  AddrName
     {
         get  { return  _AddrName; }
         set  { _AddrName = value; }
     }
     public  string  CityName
     {
         get  { return  _CityName; }
         set  { _CityName = value; }
     }
     public  string  TelNum
     {
         get  { return  _TelNum; }
         set  { _TelNum = value; }
     }
   
}

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

List<CityInformation> cityList = new  List<CityInformation>();
//声明实体类集合,以保存实体类集合
using  (XmlReader xReader = XmlReader.Create( new  StringReader(xmlStr)))
{
     xReader.Read();
     while  (xReader.Read())
     {
         try
         {
             xReader.ReadToFollowing( "AddrName" );
             string  addrName = xReader.ReadElementContentAsString();
             xReader.ReadToNextSibling( "CityName" );
             string  cityName = xReader.ReadElementContentAsString();
             xReader.ReadToNextSibling( "TelNum" );
             string  telNum = xReader.ReadElementContentAsString();
//解析一行数据库XML的数据。
CityInformation cityInfo = new  CityInformation();
cityInfo.AddrName = addrName;
cityInfo.CityName = cityName;
cityInfo.TelNum = telNum;
cityList.Add(cityInfo);
               //实例化实体类,然后将实体类添加到实体类集合中去。
         }
         catch  (Exception ex)
         { }
        
     }
}
this .ShowCityList.ItemsSource = cityList;
   //将实体类集合绑定到DataGrid

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

<sdk:DataGrid HorizontalAlignment= "Left"   AutoGenerateColumns= "False"   Margin= "28,71,0,0"  Name= "ShowCityList"  VerticalAlignment= "Top"   Height= "271"   Width= "324"  >
             <sdk:DataGrid.Columns>
                 <sdk:DataGridTextColumn Header= "省会"  Binding= "{Binding AddrName}"  IsReadOnly= "True"  Width= "108" />
                 <sdk:DataGridTextColumn Header= "城市"  Binding= "{Binding CityName}"  IsReadOnly= "True"  Width= "108" />
                 <sdk:DataGridTextColumn Header= "电话区号"  Binding= "{Binding TelNum}"  IsReadOnly= "True"  Width= "108" />
             </sdk:DataGrid.Columns>
         </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 下载。


    本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/02/15/1955589.html,如需转载请自行联系原作者

相关文章
|
11月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
494 13
|
SQL druid Java
线程池相关故障问题之Druid数据库连接池中,为何需要设置TransactionTimeout
线程池相关故障问题之Druid数据库连接池中,为何需要设置TransactionTimeout
1078 0
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
关系型数据库 数据库 PostgreSQL
【赵渝强老师】PostgreSQL的模板数据库
在PostgreSQL中,创建新数据库时,默认通过拷贝`template1`实现。`template1`包含标准系统对象,可自定义以影响新数据库内容;而`template0`是纯净模板,仅含预定义对象且不应修改。视频讲解和代码示例展示了如何查看现有数据库信息及标识字段的作用。 ![图示](https://ucc.alicdn.com/pic/developer-ecology/yub6x2mlkqwck_398ed06397a44c2d9bfbb5ae5c90bbc0.png) [视频链接](https://www.bilibili.com/video/BV1szyfY4EQn)
297 0
【赵渝强老师】PostgreSQL的模板数据库
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之在部署PolarDB-Kubernetes时,如何设置数据库密码
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
432 56
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
1172 3
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1639 2
|
应用服务中间件 数据库
Tomcat 的数据库连接池设置与应用
Tomcat 的数据库连接池设置与应用
305 3
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版

热门文章

最新文章