【C#】DevExpress实现复合表头
https://download.csdn.net/blog/column/9993043/120721622
①将创建的GridControl下的GirdView1转化为BandGridView类型;
②创建需要展示的列(指定列的名称【Name】、描述【caption】、数据字段名称【FieldName】)
③绑定列实现复合表头。
注意:如果复合表头有多行,则需要设置新增Band的Row Count,然后设置【Band properties下的AutoFillDown=false】
代码例子https://www.shuzhiduo.com/A/lk5aG060z1/
根据理解,复合表的数据绑定如下:
1 public GridControlTest() 2 { 3 InitializeComponent(); 4 5 //首先拖到窗体上一个GridControl,在表格上点击“Click here to change view”链接,在弹出菜单中选择“convert to”-->“AdvBandedGridView”。 6 InitGrid(); // 初始化表格 7 8 } 9 10 11 // 初始化表格 12 13 private void InitGrid() 14 { 15 // advBandedGridView1是表格上的默认视图,注意这里声明的是:BandedGridView 16 BandedGridView view = advBandedGridView1 as BandedGridView; 17 18 view.BeginUpdate(); //开始视图的编辑,防止触发其他事件 19 view.BeginDataUpdate(); //开始数据的编辑 20 21 view.Bands.Clear(); 22 // 设置样式(column隐藏) 23 view.OptionsView.ShowColumnHeaders = false; // 因为有Band列,所用把Column隐藏 24 25 //添加列标题 26 GridBand bandID = view.Bands.AddBand("ID"); 27 bandID.Visible = false; //隐藏ID列 28 GridBand bandName = view.Bands.AddBand("姓名"); 29 GridBand bandSex = view.Bands.AddBand("性别"); 30 GridBand bandBirth = view.Bands.AddBand("出生日期"); 31 GridBand bandScore = view.Bands.AddBand("分数"); 32 GridBand bandMath = bandScore.Children.AddBand("数学"); 33 GridBand bandChinese = bandScore.Children.AddBand("语文"); 34 GridBand bandEnglish = bandScore.Children.AddBand("英语"); 35 GridBand bandSubTotal = bandScore.Children.AddBand("小计"); 36 GridBand bandRemark = view.Bands.AddBand("备注"); 37 38 //列标题对齐方式 39 bandName.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 40 bandSex.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 41 bandBirth.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 42 bandScore.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 43 bandMath.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 44 bandChinese.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 45 bandEnglish.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 46 bandSubTotal.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 47 bandRemark.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; 48 49 // 绑定数据源 50 DataBindings(); 51 52 // 将标题列和数据列对应 53 view.Columns["ID"].OwnerBand = bandID; 54 view.Columns["Name"].OwnerBand = bandName; 55 //view.Columns["Sex"].OwnerBand = bandSex; 56 //view.Columns["Birth"].OwnerBand = bandBirth; 57 //view.Columns["Math"].OwnerBand = bandMath; 58 //view.Columns["Chinese"].OwnerBand = bandChinese; 59 //view.Columns["English"].OwnerBand = bandEnglish; 60 //view.Columns["SubTotal"].OwnerBand = bandSubTotal; 61 //view.Columns["Remark"].OwnerBand = bandRemark; 62 view.EndDataUpdate();//结束数据的编辑 63 view.EndUpdate(); //结束视图的编辑 64 } 65 66 /// <summary> 67 /// 绑定数据源 68 /// </summary> 69 private void DataBindings() 70 { 71 Console.WriteLine("绑定数据源"); 72 DataTable dt = new DataTable(); 73 dt.Columns.Add("ID"); 74 dt.Columns.Add("Name"); 75 dt.Rows.Add(1, "张三"); 76 gridControl1.DataSource = dt; 77 gridControl1.MainView.PopulateColumns(); 78 79 }
AdvBandedGridView和BandedGridView的主要区别在于它们支持的布局复杂度和功能。 AdvBandedGridView不仅支持BandedGridView的所有功能,还提供了更复杂的单元格布局支持。
BandedGridView主要用于将数据列组织成带状布局,通过将列分为不同的带(Band),可以更好地对数据进行分类和展示。这种视图方式适合于需要多级表头或复杂数据分类的场景12。
AdvBandedGridView则在BandedGridView的基础上,进一步提供了对复杂单元格布局的支持。这意味着它不仅可以实现多行表头,还可以对单元格进行更复杂的布局设计,如合并单元格、设置不同的样式等。这种高级功能使得AdvBandedGridView适用于需要高度自定义和数据展示复杂度的场景
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。