界面控件DevExpress WinForms中文教程:Banded Grid View - API

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

在本教程中,您将学习如何使用DevExpress WinForms在代码中创建带状和高级带状布局。首先将主视图切换到所需的类型,然后您将创建第一级带状和子带状来创建层次结构。初始化带状之后,将创建列并将它们链接到父带状,最后您将切换到高级带状网格视图,把列移动到第二行,并让列标题填充它们下面的空白空间。

获取DevExpress WinForms 正式版下载

开始

从一个绑定到Car数据库的Grid Control应用程序开始。

切换到带状网格视图

Ribbon控件中的Create Banded Layout按钮将启动把布局切换到带状视图的代码,在Click事件处理程序中,创建一个BandedGridView实例,禁用其ColumnViewOptionsBehavior.AutoPopulateColumns选项,并将结果对象分配给网格的GridControl.MainView 属性。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// Switch to the Banded Grid View.
BandedGridView view = new BandedGridView();
view.OptionsBehavior.AutoPopulateColumns = false;
gridControl1.MainView = view;
}

运行应用程序并单击Create Banded Layout按钮,布局切换了,但是新创建的View是空的,因为禁用了自动列生成。

创建顶级Bands

关闭应用程序并返回处理程序代码,创建GridBand实例,在顶层分层级别添加Main、Performance Attributes和Notes band,将对象添加到视图的BandedGridView.Bands集合中。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// ...
// Create top-level bands.
GridBand bandMain = new GridBand() { Name = "bandMain", Caption = "Main" };
GridBand bandPerformanceAttributes = new GridBand() { Name = "bandPerformance", Caption = "Performance Attributes" };
GridBand bandNotes = new GridBand() { Name = "bandNotes", Caption = "Notes" };
view.Bands.AddRange(new GridBand[] { bandMain, bandPerformanceAttributes, bandNotes });
}

运行应用程序,单击按钮,现在视图将显示bands。

创建嵌套Bands

这一次,创建嵌套bands,为此创建新的band对象并将它们添加到主band的GridBand.Children集合中。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// ...
// Create nested bands.
GridBand bandModel = new GridBand { Name = "bandModel", Caption = "Model" };
GridBand bandPrice = new GridBand { Name = "bandPrice", Caption = "Price" };
bandMain.Children.AddRange(new GridBand[] { bandModel, bandPrice });
}

运行应用程序并单击按钮来查看新的分层band结构。

创建带状列

返回到单击处理程序代码并创建由BandedGridColumn对象表示的列,初始化它们的GridColumn.FieldName属性并使它们可见,将创建的列添加到视图的BandedGridView.Columns集合中。

使用GridColumn.DisplayFormat属性将Price列值格式化为货币。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// ...
// Create banded grid columns and make them visible.
BandedGridColumn colTrademark = new BandedGridColumn() { Name = "colTrademark", FieldName = "Trademark", Visible = true };
BandedGridColumn colModel = new BandedGridColumn() { Name = "colModel", FieldName = "Model", Visible = true };
BandedGridColumn colCategory = new BandedGridColumn() { Name = "colCategory", FieldName = "Category", Visible = true };
BandedGridColumn colPrice = new BandedGridColumn() { Name = "colPrice", FieldName = "Price", Visible = true };
BandedGridColumn colHP = new BandedGridColumn() { Name = "colHP", FieldName = "HP", Visible = true };
BandedGridColumn colLiter = new BandedGridColumn() { Name = "colLiter", FieldName = "Liter", Visible = true };
BandedGridColumn colCyl = new BandedGridColumn() { Name = "colCyl", FieldName = "Cyl", Visible = true };
BandedGridColumn colDescription = new BandedGridColumn() { Name = "colDescription", FieldName = "Description", Visible = true };
BandedGridColumn colPicture = new BandedGridColumn() { Name = "colPicture", FieldName = "Picture", Visible = true };
view.Columns.AddRange(new BandedGridColumn[] { colTrademark, colModel, colCategory, colPrice, colHP, colLiter, colCyl, colDescription, colPicture });

// Format the Price column values as currency.
colPrice.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
colPrice.DisplayFormat.FormatString = "c2";
}

运行应用程序并再次点击按钮,列没有显示在视图中,这是因为它们还没有链接到bands 。

为Bands分配列

要将列添加到Bands中,请设置列的BandedGridColumn.OwnerBand属性。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// ...
// Assign columns to bands.
colTrademark.OwnerBand = bandModel;
colModel.OwnerBand = bandModel;
colCategory.OwnerBand = bandModel;
colPrice.OwnerBand = bandPrice;
colHP.OwnerBand = bandPerformanceAttributes;
colLiter.OwnerBand = bandPerformanceAttributes;
colCyl.OwnerBand = bandPerformanceAttributes;
colDescription.OwnerBand = bandNotes;
colPicture.OwnerBand = bandNotes;
}

运行应用程序,单击按钮,可以看到列现在在相应的bands下可见。

切换到高级带状网格视图

返回代码并修改处理程序,使其创建高级带状网格视图替代标准带状网格视图,只需为视图使用一个不同的类,其余的代码将继续工作。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// Switch to the Advanced Banded Grid View.
AdvBandedGridView view = new AdvBandedGridView();
view.OptionsBehavior.AutoPopulateColumns = false;
gridControl1.MainView = view;
// ...
}

运行应用程序,布局和以前一样,只是列的自动宽度功能现在被禁用了。

将列排列成多行

关闭应用程序并将列标题排列到多行中,要在父bands内的其他列下显示Category和Liter列,请将它们的 BandedGridColumn.RowIndex 属性设置为1。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// ...
// Set the vertical position of column headers.
colCategory.RowIndex = 1;
colLiter.RowIndex = 1;
}

再次运行应用程序,可以看到更改,但是现在在某些列标题下出现了空格。

自动拉伸列标题

要自动修改列标题的高度来填充空白空间,请启用它们的BandedGridColumn.AutoFillDown选项。

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemCl
// ...
// Stretch columns to fit empty spaces below them.
colPrice.AutoFillDown = true;
colDescription.AutoFillDown = true;
colPicture.AutoFillDown = true;
}

运行应用程序并再次单击Create Banded Layout按钮来查看最终结果。

完整代码

C#

cs 复制代码
private void btnCreateBandedLayout_ItemClick(object sender, ItemClickEventArgs e) {
// Switch to the Advanced Banded Grid View.
AdvBandedGridView view = new AdvBandedGridView();
view.OptionsBehavior.AutoPopulateColumns = false;
gridControl1.MainView = view;

// Create top-level bands.
GridBand bandMain = new GridBand() { Name = "bandMain", Caption = "Main" };
GridBand bandPerformanceAttributes = new GridBand() { Name = "bandPerformance", Caption = "Performance Attributes" };
GridBand bandNotes = new GridBand() { Name = "bandNotes", Caption = "Notes" };
view.Bands.AddRange(new GridBand[] { bandMain, bandPerformanceAttributes, bandNotes });

// Create nested bands.
GridBand bandModel = new GridBand { Name = "bandModel", Caption = "Model" };
GridBand bandPrice = new GridBand { Name = "bandPrice", Caption = "Price" };
bandMain.Children.AddRange(new GridBand[] { bandModel, bandPrice });

// Create banded grid columns and make them visible.
BandedGridColumn colTrademark = new BandedGridColumn() { Name = "colTrademark", FieldName = "Trademark", Visible = true };
BandedGridColumn colModel = new BandedGridColumn() { Name = "colModel", FieldName = "Model", Visible = true };
BandedGridColumn colCategory = new BandedGridColumn() { Name = "colCategory", FieldName = "Category", Visible = true };
BandedGridColumn colPrice = new BandedGridColumn() { Name = "colPrice", FieldName = "Price", Visible = true };
BandedGridColumn colHP = new BandedGridColumn() { Name = "colHP", FieldName = "HP", Visible = true };
BandedGridColumn colLiter = new BandedGridColumn() { Name = "colLiter", FieldName = "Liter", Visible = true };
BandedGridColumn colCyl = new BandedGridColumn() { Name = "colCyl", FieldName = "Cyl", Visible = true };
BandedGridColumn colDescription = new BandedGridColumn() { Name = "colDescription", FieldName = "Description", Visible = true };
BandedGridColumn colPicture = new BandedGridColumn() { Name = "colPicture", FieldName = "Picture", Visible = true };
view.Columns.AddRange(new BandedGridColumn[] { colTrademark, colModel, colCategory, colPrice, colHP, colLiter, colCyl, colDescription, colPicture });

// Format the Price column values as currency.
colPrice.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
colPrice.DisplayFormat.FormatString = "c2";

// Assign columns to bands.
colTrademark.OwnerBand = bandModel;
colModel.OwnerBand = bandModel;
colCategory.OwnerBand = bandModel;
colPrice.OwnerBand = bandPrice;
colHP.OwnerBand = bandPerformanceAttributes;
colLiter.OwnerBand = bandPerformanceAttributes;
colCyl.OwnerBand = bandPerformanceAttributes;
colDescription.OwnerBand = bandNotes;
colPicture.OwnerBand = bandNotes;

// Set the vertical position of column headers.
colCategory.RowIndex = 1;
colLiter.RowIndex = 1;

// Stretch columns to fit empty spaces below them.
colPrice.AutoFillDown = true;
colDescription.AutoFillDown = true;
colPicture.AutoFillDown = true;
}
相关推荐
津津有味道21 小时前
VB.net复制Ntag213卡写入UID
.net·nfc·ntag213·写uid
lv_fu21 小时前
调用.net DLL让CANoe自动识别串口号
.net·dll·capl·canoe·vid pid·自动串口
步、步、为营21 小时前
.NET 事件模式举例介绍
java·开发语言·.net
追逐时光者1 天前
免费且全面的C#/.NET/.NET Core面试宝典,阅读量突破40万+了!
后端·.net
qq_297908011 天前
C#报价系统陈列展示成本核算系统项目管理系统纸品非纸品报价软件
sqlserver·c#·.net·开源软件
zhanshuo1 天前
ASP.NET Request对象双杀技:这样传参永不乱码,浏览器适配一网打尽!
.net
喵叔哟1 天前
24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
微服务·架构·.net
Java Fans1 天前
在WPF项目中集成Python:Python.NET深度实战指南
python·.net·wpf
书中自有妍如玉2 天前
.net 使用MQTT订阅消息
java·前端·.net
Kookoos2 天前
ABP VNext 与 Neo4j:构建基于图数据库的高效关系查询
数据库·c#·.net·neo4j·abp vnext