DevExpressControl中的GridControl展现主从表数据结构

DevExpressControl中的树形控件TreeListView是用来展现层次结构的数据,但是树形控件比较适合用来展形组织架构的数据。GridControl同样可以展现层次数据结构。以下举例说明,   以三个层级数据为例。

1、数据源必须是DataSet ds,在DataSet中添加3张表Table1,Table2,Tabl3,Table1有主键是Key1,Table2的主键是Key20,Key21、Table3的主键是Key30、Key31、Key32,添加三张表的主外键关系:

ds.Relations.Add(“First”, Table1.Columns["Key1"], Table2.Columns["Key20"]);

    ds.Relations.Add("Second", new DataColumn[] { Table2.Columns["Key20"], Table2.Columns["Key21"] },
    new DataColumn[] { Table3.Columns["Key30"], Table3.Columns["Key31"] });

2、给GridControl添加三个层级的GridView,选择第一个MainGridView,点击下方的链接添加新的等级Level1,并在这个等级上分创建一个GridView1,左键点击Level1添加新等级,再创建GridView2,这样三个等级的GridView创建完成。再分别选中第一级和第二级两个GridView注册MasterRowGetLevelDefaultView事件,在相应的事件中写

第一级的事件  e.DefaultView = GridView1;

第二级的事件  e.DefaultView = GridView2;

3、将数据原绑定到GridControl,GridControl.DataSource=ds.Tables["Table1"];

4、展开所有子表,选中每个GridView设置DetailHeight为一个较大的数值,如10000000,调用如下方法展开所有子表

int m_RelationIndex = 0;

        private void ExpandAllRows()
        {
            for (int masteViewRowIndex = 0; masteViewRowIndex < ds.Tables["Table1"].Rows.Count; masteViewRowIndex++)
            {
                MainGridView.ExpandMasterRow(masteViewRowIndex, 0);
                ExpandChildRows(MainGridView, masteViewRowIndex);
            }
        }

        private void ExpandChildRows(GridView gv, int rowIndex)
        {
            GridView currentChildGV = gv.GetDetailView(rowIndex, m_RelationIndex) as GridView;
            if (currentChildGV != null)
            {
                for (int childGVRowIndex = 0; childGVRowIndex < currentChildGV.DataRowCount; childGVRowIndex++)
                {
                    ExpandChildRows(currentChildGV, childGVRowIndex);
                }
            }
            else if (currentChildGV == null && gv.CanExpandMasterRowEx(rowIndex, m_RelationIndex))
            {
                gv.SetMasterRowExpandedEx(rowIndex, m_RelationIndex, true);
                ExpandChildRows(gv, rowIndex);
            }
            else if (currentChildGV == null && !gv.CanExpandMasterRowEx(rowIndex, m_RelationIndex))
            {
                return;
            }
        }

5、获取选中的GridView

var focusedGridView=GridControl.FocusedView as GridView;

6、获取当前选中的GridView的父行,即所属行

var masterRow=m_FocusedGridView.SourceRow;

7、获取当前选中GridView的父GridView

var parentView= m_FocusedGridView.ParentView as GridView;
时间: 2024-10-10 23:13:30

DevExpressControl中的GridControl展现主从表数据结构的相关文章

在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?

在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?(效果图如下:): 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列(效果图) 实现该功能属性为:<SettingsDetail ShowDetailRow="True" AllowOnlyOneMasterRowExpanded="true" />

ASPxGridView中如何对主从表绑定数据

注:在从表的aspxgridview中的(OnDataBinding()事件中绑定数据)-----代码如下 //绑定属性值表protected void grid2_sonTable_DataBinding(object sender, EventArgs e){ASPxGridView songrid = (ASPxGridView)sender; //实例化从表表object _faterid = songrid.GetMasterRowKeyValue(); //获取主表行id(模板gri

Winform开发框架之单据窗体生成(主从表,流水单号)

源码地址:https://github.com/GarsonZhang/GZFramework.ShareDemo 前言 1.在开始本节前请先重置代码为 chapter-03-start 懒人地址:https://github.com/GarsonZhang/GZFramework.ShareDemo/tree/chapter-03-start 2.创建表(商品入库主表/明细) 创建脚本目录:数据库脚本/Chapter-03新建商品入库表(主从表).sql 3.新建生成单据流水号所需的表和存储过

ITOO级联删除主从表

成绩系统有一个需求:数据字典有主从表,要求删除主表时候连同从表信息(跟牛腩中删除新闻时级联删除新闻评论相通),之前做好的那个版本中只删除主表数据,而且是按照主表数据的名称来删除,如果有重名的话还需做验证(感觉不太合理),现在需要做的是按照主表的ID来删除从表,主表的ID也能从页面拿到. 我的思路:主表的html中引用主从表两个js,主从表的调用的button的click方法名称相同,但结果它只能找到执行其中的一个方法,结果主表删除后从表没有反应. 后来李游给我思路:删除从表的js代码写在主表的触

C#顺序表(数据结构)

xmfdsh我近来心情实在不好,只因为这两天课比较少,然后一下子时间太多,不知道干什么,心情郁闷......这是要闹哪样?这都让我一个郁闷了一个晚上.闲来无聊,回顾下之前学的C#数据结构,数据结构的重要性无论是对于哪门语言都是很必要也很重要的,课程中老师教的C语言,然后我自己自学的C#,再自学了C#的数据结构,对比了下,发现C,C++这些有着指针,比较低级点的语言,写起数据结构更加能考验一个人的思维,C#作为一门高级语言,也是有着自己一套数据结构的,这些更深层次的对比等我都学了比较精通再来慢慢对

easyui主从表实现

今天用easyui做了一个主从表的查询,当然后续还会做编辑功能,用的是firefox debug ,感觉跟踪起来还是比较方便,以前做delphi开发,不用注意大小写问题,今天用easyui做前端时,让我痛苦了半天,前端的字段名用的大写,后端转来的json字段是小写,怎么搞数据都不显示,只是显示多少行,还有后台用的php,也是区分大小写的,post传的是大写参数名,处理POST参数时,却写的是小写参数名,一开始没留意,也是郁闷了半天才搞定. 以前做c/s程序开发,现在开发web的功能多了,感觉WE

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

EF里单个实体的增查改删以及主从表关联数据的各种增删 改查

本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表找主表数据) 修改(修改从表的外键) 删除(删除主从表关系.删除主表数据.删除主从表数据.修改从表数据外键) 补充内容 SaveChanges方法提交多次操作 DbSet.Add方法返回当前实体 源码和系列文章导航 注:本章节多次演示了各种删除,要重复查看效果,需要解开注释初始化数据方法. 一.EF

oracle主从表主外键对应关系

一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键. 2)主键的值不可重复,也不可为空(NULL).主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义. 3)主键的创建:在建置新表格时设定主键的方式 MySQL:  CREATE TABLE Customer (SID integer,La