Silverlight实用窍门系列:5.绑定webService数据到DataGrid,设置DataGrid模板,模拟数据库数据的绑定【附带实例源码】-阿里云开发者社区

开发者社区> 橘子红了呐> 正文

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Unsplash.it - 实用的图片占位符,支持个性化设置
  Unsplash.it 是一个使用漂亮的图像作为占位符的工具。只要把你的图像尺寸(宽与高)放到网址后面的参数中,你会得到一个占位符。你可以很容易地得到一个随机图像或者是一个模糊图像。也支持获取灰度图像和特定图像。
852 0
donetcms与Discuz整合的webconfig设置
Discuz在网站下是虚拟目录 设置web的webconfig后使用动态访问栏目导致出现 error  您请求的版块信息无效! 设置Discuz取消采用伪静态解决
607 0
使用ServiceStack.Redis实现Redis数据读写
原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; ...
1460 0
3404
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载