加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 01:22:09 所属栏目:安全 来源:网络整理
导读:??? 根据第二节说述,我们能够从webService获取到相关的信息数据。那么我们如果要查询数据库的数据,就应该在webservice端使用 Select 语句来查询到表,然后使用DataSet的GetXml()方法,获取到相应的XML格式化数据库表数据。在本实例中,我们在webService端

??? 根据第二节说述,我们能够从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. {?
  6. ????private?string?_AddrName;?
  7. ????private?string?_CityName;?
  8. ????private?string?_TelNum;?
  9. ??
  10. ????public?string?AddrName?
  11. ????{?
  12. ????????get?{?return?_AddrName;?}?
  13. ????????set?{?_AddrName?=?value;?}?
  14. ????}?
  15. ????public?string?CityName?
  16. ????{?
  17. ????????get?{?return?_CityName;?}?
  18. ????????set?{?_CityName?=?value;?}?
  19. ????}?
  20. ????public?string?TelNum?
  21. ????{?
  22. ????????get?{?return?_TelNum;?}?
  23. ????????set?{?_TelNum?=?value;?}?
  24. ????}?
  25. ????
  26. }?

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

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

    
    
  1. //声明实体类集合,以保存实体类集合?
  2. using?(XmlReader?xReader?=?XmlReader.Create(new?StringReader(xmlStr)))?
  3. {?
  4. ????xReader.Read();?
  5. ????while?(xReader.Read())?
  6. ????{?
  7. ????????try?
  8. ????????{?
  9. ????????????xReader.ReadToFollowing("AddrName");?
  10. ????????????string?addrName?=?xReader.ReadElementContentAsString();?
  11. ????????????xReader.ReadToNextSibling("CityName");?
  12. ????????????string?cityName?=?xReader.ReadElementContentAsString();?
  13. ????????????xReader.ReadToNextSibling("TelNum");?
  14. ????????????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. }?
  8. this.ShowCityList.ItemsSource?=?cityList;?
  9. ??//将实体类集合绑定到DataGrid?

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

    
    
  1. <sdk:DataGrid?HorizontalAlignment="Left"??AutoGenerateColumns="False"??Margin="28,71,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 下载。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读