【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         }

 AdvBandedGridViewBandedGridView的主要区别在于它们支持的布局复杂度和功能。‌ AdvBandedGridView不仅支持BandedGridView的所有功能,还提供了更复杂的单元格布局支持。

BandedGridView主要用于将数据列组织成带状布局,通过将列分为不同的带(Band),可以更好地对数据进行分类和展示。这种视图方式适合于需要多级表头或复杂数据分类的场景‌12。

AdvBandedGridView则在BandedGridView的基础上,进一步提供了对复杂单元格布局的支持。这意味着它不仅可以实现多行表头,还可以对单元格进行更复杂的布局设计,如合并单元格、设置不同的样式等。这种高级功能使得AdvBandedGridView适用于需要高度自定义和数据展示复杂度的场景‌

posted @ 2024-10-10 10:07  陆陆无为而治者  阅读(35)  评论(0编辑  收藏  举报