zoukankan      html  css  js  c++  java
  • DEV GridView嵌套

    近来的DEV搞更多。试图寻找专业点的程序做,对这样一个小小的研究。

    本篇是多么真实,现在的记录,可以通过点击这条线的子表的内容相关联的行中打开的列表。的影响,如下面的:


    以下是实现过程:

    1.设计器里面:


    在MainView以下新建一个EntryView(create a new level) 这样这个gridControl里面就有2个gridView了。

    然后打开你的设计器(Run Designer)

    假设你仅仅是測试,或者甲方对美丑没要求时,对,你神马都不须要设置了。


    2.绑定数据

    和正常的绑定一样,gridControl.Datasource = DataSet.table[0]; 

    不同的是。这个DataSet里面要有2个表,table1和table2须要是主从表的关系(主表有个字段是从表的外键,形成关系),比方:就不比方了,有点懒。

    存储过程:

    select OutStockPlan.* from T_OutStock_Plan  as OutStockPlan where OutStockPlan.BillDate< @maxDate_Invo and OutStockPlan.BillDate> @minDate_Invo
       
    select ospe.* from T_OutStock_Plan as osp
    left join T_OutStock_Plan_Entry ospe on osp.OnlyID=ospe.VoucherID
    where osp.BillDate< @maxDate_Invo and osp.BillDate> @minDate_Invo

    一个存储过程同一时候返回2个表。第一条语句返回主表的行,第二条语句返回这些主表信息相应的子表行。仅仅要不嫌麻烦,你要分开运行也能够。我还是有点懒。

    Access运行:

     WMSDS relationDS = this._WMSAccess.Select_OutPlanAndEntry_Relation(dateS, dateE); //运行上面的存储过程。返回一个DataSet。包括table1和table2


     DataRelation dr = new DataRelation("通知分录", new DataColumn[] { relationDS.T_OutStock_Plan.Columns["OnlyID"] }, new DataColumn[] { relationDS.T_OutStock_Plan_Entry.Columns["VoucherID"] });   //new一个表关系,绑定2个表的键
              

     relationDS.Relations.Add(dr);    //加入表关系到dataset

    前台绑定:
     grid_VoucherPlanList.DataSource = relationDS.Tables["T_OutStock_Plan"]; //把主表当成datasource绑定给gridControl


    收工。


    追加:AllowOnlyOneMasterRowExpanded = True  那么同一时候仅仅能展开一行,假设是false就能够随意展开。


    假设不想显示那个通知分录的tab,能够设置ShowDetailTabs为false。 只是为毛是展开一个tab呢?是不是意味着一个主表关联多个子表的时候能够同一时候展开,我懒不试了。


    再次追加:ColumnAutoWidth属性。 当子View里面想bestFitColumn的时候,须要把子表的ColumnAutoWidth设置为false。 可是假设主View的ColumnAutoWidth设置为True的时候,子表的设置将无效, 所以想把列宽都fit的话2个view都设置为false吧。


    再再次追加:假设想隐藏子View中的某一列的话,加入主View事件。例如以下:

     private void gridView1_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)
            {
                DevExpress.XtraGrid.Views.Grid.GridView aView = gridView1.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;


                if (aView != null)
                {
                    aView.Columns["VoucherID"].Visible = false;    //aView就是子View。设置VID 列为隐藏
                    aView.BestFitColumns();
                }
            }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    C#运行Javascript脚本Utility
    SQL Mail XPs Options
    TSQL AVG Functions
    eclipse编译时过滤SVN版本控制信息方法(转)
    追MM与设计模式
    android的性能调优
    对象的赋值和复制(转)
    SVN Working Copy xxx locked and cleanup failed
    HTTP协议详解(转)
    atoi和itoa函数的实现
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4806496.html
Copyright © 2011-2022 走看看