在Silverlight中的DataGrid控件使用中我们想点击其中一行并且看这一行的详细信息应该如何做呢?而且这个详细信息是多行的数据,而非简单的几个属性。 在这里我们使用DataGrid.RowDetailsTemplate来设置或者获取行详细信息。首先我们准备一个DataGrid命名为A,设置其RowDetailsVisibilityMode=VisibleWhenSelected (行详细信

  

  在Silverlight中的DataGrid控件使用中我们想点击其中一行并且看这一行的详细信息应该如何做呢?而且这个详细信息是多行的数据,而非简单的几个属性。

  在这里我们使用DataGrid.RowDetailsTemplate来设置或者获取行详细信息。首先我们准备一个DataGrid命名为A,设置其RowDetailsVisibilityMode="VisibleWhenSelected" (行详细信息模板的显示模式是当这行被选中的时候展开这行的详细信息。)然后再为A设置DataGrid.RowDetailsTemplate模板,并且在这个模板中添加一个DataGrid命名为B,这就是前台的XAML代码,在后台中我们设置一个实体集AList绑定到A的DataGrid,然后在AList实体集中有一个属性是BList,这个就是多行的详细信息。将BList详细信息字段绑定到B的DataGrid控件的ItemsSource即可。

  下面我们来看看这个简单的应用技巧的Xaml代码如下:

<Grid x:Name="LayoutRoot" Background="White">
        <!--这里是第一个DataGrid,其DataGrid.RowDetailsTemplate模板会绑定另外一个DataGrid以显示其详细信息-->
        <sdk:DataGrid x:Name="gridEmployee" CanUserReorderColumns="False" CanUserSortColumns="False" 
                        RowDetailsVisibilityMode="VisibleWhenSelected" 
                        HorizontalAlignment="Center" ScrollViewer.VerticalScrollBarVisibility="Auto" 
                        Height="200"  AutoGenerateColumns="False" Width="422" VerticalAlignment="Center">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Width="150" 
                                        Header="用户名" 
                                        Binding="{Binding UserName}"/>
            <sdk:DataGridTextColumn Width="150" 
                                        Header="用户密码" 
                                        Binding="{Binding UserPwd}"/>
        </sdk:DataGrid.Columns>
        <sdk:DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <!--这里是第二个DataGrid显示详细信息-->
                <sdk:DataGrid  AutoGenerateColumns="False" ItemsSource="{Binding UserDetailInfomation}"
                                HeadersVisibility="None">
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="地址" 
                                        Binding="{Binding UserAddress}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="城市" 
                                        Binding="{Binding UserCity}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="国籍" 
                                        Binding="{Binding UserCountry}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="类型" 
                                        Binding="{Binding UserState}"/>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
            </DataTemplate>
        </sdk:DataGrid.RowDetailsTemplate>
    </sdk:DataGrid>
</Grid>

  然后我们来看看他的数据源的Xaml.cs代码如下:

   public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            this.gridEmployee.ItemsSource = new UserInfo().GetEmployeeData();
        }
    }
    /// <summary>
    /// 用户信息
    /// </summary>
    public class UserInfo
    {
        public string UserName { get; set; }
        public string UserPwd { get; set; }
        /// <summary>
        /// 用户详细信息
        /// </summary>
        public List<UserDetailInfo> UserDetailInfomation{get;set;}
        public UserInfo()
        { }
        /// <summary>
        /// 获取用户信息的实例
        /// </summary>
        /// <returns></returns>
        public List<UserInfo> GetEmployeeData()
        {
            List<UserInfo> employees = new List<UserInfo>();
            employees.Add
                (
                new UserInfo
                {
                    UserName = "李伟",
                    UserPwd = "1333821",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="四川省成都市",
                                UserCity="成都",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="四川省内江市",
                                UserCity="内江",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            employees.Add
                (
                new UserInfo
                {
                    UserName = "Json",
                    UserPwd = "json282",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="广东省广州市",
                                UserCity="广州",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="广东省茂名市",
                                UserCity="茂名",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            employees.Add
                (
                new UserInfo
                {
                    UserName = "刘敏",
                    UserPwd = "motorola",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="湖南省长沙市",
                                UserCity="长沙",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="湖南省长沙市",
                                UserCity="长沙",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            return employees;
        }
    }
    /// <summary>
    /// 用户详细信息的实体
    /// </summary>
    public class UserDetailInfo
    {
        public string UserAddress { get; set; }
        public string UserCity { get; set; }
        public string UserState { get; set; }
        public string UserCountry { get; set; }
}

  最后我们来看看它的运行效果,如果需要源码请点击SLDataGridRowDetail.zip下载。

  

  

本文来自程兴亮的博客,原文地址:http://www.cnblogs.com/chengxingliang/archive/2011/07/22/2112895.html

DataGrid行详细信息的绑定--DataGrid.RowDetailsTe(转载)的更多相关文章

  1. Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate

    Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...

  2. easyui datagrid行合并

    easyui datagrid行合并 合并方法 /** * EasyUI DataGrid根据字段动态合并单元格 * 参数 tableID 要合并table的id * 参数 colList 要合并的列 ...

  3. easyUI 展开DataGrid里面的行显示详细信息

    http://blog.csdn.net/yanghongchang_/article/details/7854156原著 datagrid 可以改变它的view(视图)去显示不同的效果.使用详细视图 ...

  4. 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...

  5. WPF设置DataGrid行内容高度自适应 与 TextBox/TextBlock内容高度自适应

    WPF设置DataGrid行内容高度自适应  TextBox/TextBlock内容高度自适应  参考: DataGrid 控件中的调整大小选项: http://msdn.microsoft.com/ ...

  6. WPF Datagrid 动态生成列 并绑定数据

    原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用  可 ...

  7. Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】

    前几天项目中遇到一个需求用到了Easyui datagrd行内添加和编辑数据,同时对行内数据上移下移,所以对这几个功能做个总结. 1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的 ...

  8. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息

    输入命令就可以查看本机的很多硬件的详细信息: 在命令行cmd 下,输入dxdiag  查看关于电脑许多硬件的详细信息

  9. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

随机推荐

  1. C++ 11 之推导关键词

    C++ 11新增了两个推导关键词,auto & decltype 1.区别 auto:用于推导变量类型: decltype: 用于推导表达式或者函数返回值 2.直接上代码 intmain() ...

  2. SecureCRT相关设置

    Technorati 标签: SecureCRT,设置 1.  使用SecureCRT对Linux vim进行颜色设置 Linux的控制台颜色很好设置:Options ->Session Opt ...

  3. SQL语句执行顺寻

    SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需 ...

  4. WCF 服务的ABC之地址(五)

    地址 Address 在WCF中,每个服务都有一个唯一的地址(Address). 地址包含两个重要的元素:服务位置及传输协议. 服务位置包含目标机器名.站点.通信端口.管道(或队列),以及一个可选的特 ...

  5. django post报403问题

    第一个问题是: 我使用jquery的ajax向后台传值, 当使用GET方法时没问题 $.ajax({ type:"GET" url: data: success: }) 但是由于基 ...

  6. WPF之Binding对数据的转换(第五天)

    Binding在Slider控件与TextBox控件之间建立关联,值可以互相绑定,但是它们的数据类型是不同的,Slider是Double类型,Text为String.原来,Binding有一种机制称为 ...

  7. STL算法

    STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...

  8. nullptr和NULL

    nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...

  9. java NIO与IO的区别

    nio是new io的简称,从jdk1.4就被引入了.现在的jdk已经到了1.6了,可以说不是什么新东西了.但其中的一些思想值得我来研究.这两天,我研究了下其中的套接字部分,有一些心得,在此分享. 首 ...

  10. duilib中各控件响应的消息类型

    消息 说明 Sender click 鼠标点击 CButtonUI dropdown 下拉显示 CComboUI headerclick 点击列标题 CListHeaderItemUI itemact ...