在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. Css调整字体间距

    在span div 某些元素中有时候会用到调整字体的间距,设置方法: letter-spacing:15px;  

  2. memory model

    最近看C++11 atomic发现对memory_order很是不理解,memory_order_relaxed/memory_order_consume/memory_order_acquire/m ...

  3. 读取XML

    public sealed class ConfigManger { public XDocument XmlDocs { set; get; } string path = @"{0}\C ...

  4. Bootstrap模态框

    backdrop选项,当设置成false的时候, 背景不会出现半透明的遮盖层,当用户点击模态框外部时不会关闭模态框: 设置成true的时候会出现遮盖层,当用户点击模态框外部时则会关闭模态框. 那如果又 ...

  5. nginx总结

    kill int 2333  进程号   停止程序 kiil quit 2322  优雅停止服务 kill -HUP 2333  优雅重启 从新读取配置文件 kill -HUP 'cat logs/n ...

  6. php文本操作方法集合比较

    fgets和fputs.fread和fwrite.fscanf和fprintf 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数 ...

  7. php + apache + mysql环境搭建

    别人写的很好,若是不改变php默认访问路径的话,能够成功搭建是没问题的 http://www.cnblogs.com/pharen/archive/2012/02/06/2340628.html

  8. MIT Scheme 的基本使用

    MIT Scheme 的基本使用 安装和启动 启动 在 Windows 下正确安装 MIT Scheme 系统后,程序菜单里将有一个 MIT Scheme 目录,其中包含: Documentation ...

  9. 连续子数组的最大和/1007. Maximum Subsequence Sum (25)

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  10. Java集合的小抄

    在尽可能短的篇幅里,将所有集合与并发集合的特征.实现方式.性能捋一遍.适合所有"精通Java",其实还不那么自信的人阅读. [转自:花钱的年华] 期望能不止用于面试时,平时选择数据 ...