gridcontrol -- master-detail 绑定数据

一、绑定DataSet

1. 创建数据源 DataSet;DataSet中有两张表,并且主表与子表必须建立关联;

DataTable dtMaster =new DataTable();
DataTable dtDetail= new DataTable();
dtMaster .Columns.Add("RelationColumn");
dtDetail.Coumns.Add("RelationColumn");
 using (DataSet ds = new DataSet())
            {
                ds.Tables.AddRange(new DataTable[] {
                                                   dtMaster .Copy(),
                                                   dtDetail.Copy()                               });
                // 创建表关系
                DataRelation relation = new DataRelation("detailTable", ds.Tables[0].Columns[0], ds.Tables[1].Columns[0], false);
                ds.Relations.Add(relation); // 添加
                gridControl1.DataSource = ds.Tables[0];  // 指定数据源
            }

2. ui 设置 gridControl 控件;

gridControl中已有一默认的Gridview1 为MainView 用来显示dtMaster的数据;

gridControl 添加一个level.在该level中创建 gridView 命名为gvDetial. 用来显示dtDetail的数据;

修改level的名称,名称必须和数据源中定义的DataRelation的名称一致;gridcontrol 会根据MasterTable的relation来创建并显示detail的数据结构;

将两个Gridveiw中的添加Column ,并绑定相应数据源表的字段;

1  this.gvTable.OptionsDetail.AllowExpandEmptyDetails = true;
2  this.gvTable.OptionsDetail.ShowDetailTabs = false;
3  this.gvTable.OptionsPrint.ExpandAllDetails = true;
4  this.gvTable.OptionsPrint.PrintDetails = true;

二、绑定实体对象

[DataContract]
    [Serializable]
    public class PlanInfo:C_ProductPlan
    {
        public PlanInfo()
        {
            Items = new List<ProducePlanItem>();
        }

        [DataMember]
        public List<ProducePlanItem> Items { get; set; }
    }

    [DataContract]
    [Serializable]
    public class ProducePlanItem :C_ProductPlanItem
    {

        public ProducePlanItem()
        {
            ProcessConfig = new List<ProcessInfo>();
        }

        [DataMember]
        public List<ProcessInfo> ProcessConfig { get; set; }

    }

    [Serializable]
    public class ProcessInfo
    {
        public String Name{get;set;}
        public int Order{get;set;}
        public bool? IsChecked{get;set;}
        public String Memo{get;set;}
    }
public class ProducePlanItems : ArrayList, IRelationList
    {
        public ProducePlanItems()
        {

        }

        #region IRelationList 成员

        public System.Collections.IList GetDetailList(int index, int relationIndex)
        {
            return this[index].ProcessConfig;
        }

        public string GetRelationName(int index, int relationIndex)
        {

            return "ProcessConfig";
        }

        public bool IsMasterRowEmpty(int index, int relationIndex)
        {
            return false;
        }

        public int RelationCount
        {
            get { return 1; }
        }

        #endregion

        public virtual new ProducePlanItem this[int index]
        {
            get { return base[index] as ProducePlanItem; }
        }
    }

需要引用Dexexpress.Data.dll,

1.gridview-MainView 绑定到UI中定义的ProducePlanItems.

2.添加一个level1 将level1重命名称ProcessConfig(对应上面IRelationList.GetRelationName的返回
 
 3.level1 添加 gridview2 ,需要手动设置gridview的列,可以设置gridview2的ViewCaption

4.获取数据后将items转化成producePlanItems,并绑定到UI

时间: 2024-10-31 11:31:28

gridcontrol -- master-detail 绑定数据的相关文章

Win10 UWP开发系列:实现Master/Detail布局

在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/dn997765.aspx 样式如下: 在微软官方的Sample里,有这种样式的代码示例,下载地址:https://github.com/Microsoft/Windows-univ

[微信小程序] 微信小程序下拉滚动选择器picker绑定数据的两种方式

微信小程序下拉滚动选择器picker绑定数据的两种方式  本地数据绑定和wx.request(OBJECT) json数据绑定 1.本地数据绑定 (对象数组) Page({ data:{ //户型 这是一个本地的对象,然后绑定到页面上 pic_array: [ { id: 13, name: '1室1厅1卫' }, { id: 14, name: '1室2厅1卫' }, { id: 15, name: '2室1厅1卫' }, { id: 16, name: '3室1厅2卫' }, { id: 1

关于LookUpEdit绑定数据源和取值

首先在GridControl里在Repository中添加一个GridLookUpEdit 在设置DisPlayMember(界面显示字段) 然后在后台绑定数据 List<EntityBrand> entityBrand = client.GetBrandList(); this.repositoryItemLookUpEdit.DataSource = entityBrand; 然后在GridControl 将控件绑定的某一列上,设置FieldName 这就基本完成数据绑定了 数据获取部分

UWP 快速的Master/Detail实现

最近在写快报(还没有写完)的过程中,一开始就遇到了这个Master/Detail如何实现的问题. 微软给出Demo并不符合要求,搜索后找到了今日头条开发者写的一篇 :实现Master/Detail布局 拜读之后感觉实现有些麻烦,所以呢这里给出一个更快速的实现. 好滴,下面直接进入正题. 为了实现Master/Detail我决定和今日头条开发者一样采用左右各一个Frame来托管页面 <Grid.ColumnDefinitions> <ColumnDefinition x:Name=&quo

GridView等表格模板列绑定数据的方法

//绑定GridView每一行中的CheckBoxList protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { CheckBoxList cbl = (CheckBoxList)e.Row.FindControl("ckbCheckBox"); if (cbl != null) {

关于angularJS绑定数据时自动转义html标签

折磨了两天,最后发现答案竟如此简单,不过辛苦还是值得的,毕竟为了弄明白这一点又学习了更多代码. angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签中的注入攻击,但有些时候还是需要的,特别是从数据库读取带格式的文本时,无法正常的显示在页面中. 而要对html进行转义,则要在数据绑定的html标签中使用ng-bind-html属性,该属性依赖与$sanitize,也就是需要引入angular-saniti

【 D3.js 入门系列 — 2 】 绑定数据和选择元素

1. 如何绑定数据 D3 有一个很独特的功能:能将数据绑定到 DOM 上,也就是绑定到文档上.这么说可能不好理解,例如网页中有段落元素<p>,我们可以将整数 5 与 <p>绑定到一起. D3 中是通过 data() 和 datum() 函数来绑定数据的,最常用的是 data(). 现有如下 HTML 代码: <p>Hello World 1</p> <p>Hello World 2</p> <p>Hello World 3

关于JQuery中$.data绑定数据原理或逻辑

问题: JQuery中,对于.data([key],[value])函数,当使用其进行数据绑定时,假设要绑定的数据是“引用数据类型”,也就是对象:那么.data函数绑定的是该对象的副本还是该对象的一个引用?下面通过以下小例子来测试下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Test<

asp.net中Repeater中用ul li绑定数据

<ul class="tit1"> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <li> <p class="tit1-p-1"> <img style="border: 0px;" src="/image/biaozhi.jpg" /> &

【 D3.js 选择集与数据详解 — 3 】 绑定数据的顺序

data() 函数有两个参数,第一个是被绑定数据,第二个参数用于指定绑定的顺序.在数据需要更新的时候常常会用到. 默认的情况下,data()函数是按照索引号依次绑定数组各项的.第0个元素绑定数组的第0项,第1个元素绑定数组的第1项,依此类推.也可以不按照此顺序进行绑定,这就要用到data()的第二个参数.这个参数是一个函数,称为键函数(key function). 要注意,只有在选择集原来已经绑定有数据的情况下,才能使用键函数指定绑定的顺序.请看以下代码: <body> <!-- 三个空