层级关系的数据展示

       层次关系的数据展示,即我们常说的数据展示分析。举个例子,好比有A,B,C三个教师,每个教师带几个学生,假设A教师带S1,S2,S3三个学生,B教师带S4,S5,S6三个学生,C教师带S7,S8,S9三个学生,在一个网格中,先将三位教师的信息显示出来,然后分别点击每个教师的信息,弹出所带学生的相关信息。它属于分层展示数据的一种方式。

如下图所示,有两个部门,第一个部门里面所拥有的介质有水,电,蒸汽;第二个部门有水,电,还有催化烧焦,当点击左边的部门信息旁边的加号时,展开和该部门相关的介质信息。

 

 

 

       第三方控件Infragistics中的UltraWinGrid中自带有这种功能,只要将DataSet中几个表的关系添加一下,就会自动显示成上面的样式。下面的这个方法中DataSet.Relations.Add()是设置表之间的关系的,它有几个重载方法。自己根据需要进行选择。

        private void FillTable()
        {
            string strSql = "select 部门编码,部门名称 from 部门表 where 条件";
            DataSet ds = GetDataSet(strSql,"dep");
            strSql = "select 介质编码,介质名称,部门编码 from 介质表 where 条件";
            SlnDataAccess.FillDataSet(ds, "nhxm", strSql);

            //添加关系
            ds.Relations.Add(ds.Tables[0].Columns[0], ds.Tables[1].Columns[2]);

            //绑定
            this.grdTest.DataSource = ds;
            this.grdTest.DataBind();
            Infragistics.Win.UltraWinGrid.UltraGridBand band = this.grdTest.DisplayLayout.Bands[0];

            band.Columns[0].Header.Caption = "部门编码";
            band.Columns[0].Width = 80;
            band.Columns[1].Header.Caption = "部门名称";
            band.Columns[1].Width = 80;

            band = this.grdTest.DisplayLayout.Bands[1];

            band.Columns[0].Header.Caption = "介质编码";
            band.Columns[0].Width = 80;
            band.Columns[1].Header.Caption = "介质名称";
            band.Columns[1].Width = 80;
            band.Columns[2].Hidden = true;

            //加颜色进行区分
            this.grdTest.DisplayLayout.Bands[0].Override.RowAppearance.BackColor = Color.LightSalmon;
            this.grdTest.DisplayLayout.Bands[1].Override.RowAppearance.BackColor = Color.LightYellow;
        }

        只要明确各表之间的关系,然后填充到DataSet中,将DataSet做为数据源赋值给ultraGrid就可以实现上述的分级展示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值