工具栏功能配置
// 禁用工具栏按钮
tool.SharedProps.Enabled = false;
通过设置 Enabled
属性为 false
,可以轻松禁用工具栏中的特定按钮,确保用户不会误操作。
Grid 控件高级应用
// 在 Grid 中记录时间
// 推荐在 SQL Server 中使用字符字段存储时间(未经过深入测试,但字符字段是可行的)
// 设置 Grid 的列样式为 Time 或 TimeWithSpin
// 对 Grid 列进行排序
// 首先将所有列的 VisiblePosition 设置为 0,然后重新设置每一列的位置,确保按从前到后的顺序排列
ltGrid1.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.False;
// 禁止行内换行
ltGrid1.DisplayLayout.Override.CellMultiLine = Infragistics.Win.DefaultableBoolean.False;
// 在多层表格中,第二层表格不显示列头,第一层表格仅在首行显示列头
ltGrid1.DisplayLayout.Bands[0].Override.HeaderPlacement = HeaderPlacement.FixedOnTop;
ltGrid1.DisplayLayout.Bands[1].ColHeadersVisible = false;
// 新绑定的数据列默认隐藏
ltGrid1.DisplayLayout.NewColumnLoadStyle = NewColumnLoadStyle.Hide;
// 禁用特定列的排序功能
ltGrid1.DisplayLayout.Bands[0].Columns["总库存"].SortIndicator = SortIndicator.Disabled;
// 在布尔类型列上显示全选按钮
ultraGridColumn423.Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always;
// 最后一列自动填充 Grid
ltGrid1.DisplayLayout.AutoFitStyle = AutoFitStyle.ExtendLastColumn;
// 显示合计信息
summarySettings1.DisplayFormat = "{0}";
summarySettings1.GroupBySummaryValueAppearance = appearance2;
summarySettings1.ShowCalculatingText = Infragistics.Win.DefaultableBoolean.False;
summarySettings1.SummaryDisplayArea = Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.BottomFixed;
ultraGridBand1.Summaries.AddRange(new Infragistics.Win.UltraWinGrid.SummarySettings[] {summarySettings1});
ultraGridBand1.SummaryFooterCaption = "";
// 获取 Grid 中过滤后的行
ltGrid1.DisplayLayout.Bands[0].Columns[0].CellActivation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
// 设置单元格背景颜色
ltGrid1.DisplayLayout.Bands[0].Columns[0].CellAppearance.BackColor = Color.Aqua;
// 启用树形结构显示
grid1.DisplayLayout.ViewStyle = ViewStyle.MultiBand;
// 设置最大层级数
grid1.DisplayLayout.MaxBandDepth = 2;
// 展开和折叠树形结构
foreach (var row in ltGrid1.Rows)
{
row.Expanded = true;
row.ExpandAll();
row.CollapseAll();
}
以上代码展示了如何在 Grid 中实现多种复杂的功能,包括时间记录、列排序、单元格编辑性控制等。
Excel 文件导出
// 弹出保存对话框,获取文件保存路径
string fileName = "";
SaveFileDialog dialog = new SaveFileDialog();
dialog.FileName = txtAssmItemNoPrefix.Text; // 默认文件名
dialog.Filter = "Excel Worksheets|*.xls"; // 文件类型过滤器
if (dialog.ShowDialog() == DialogResult.OK) fileName = dialog.FileName;
dialog.Dispose();
// 将 Excel 模板从资源文件加载到指定路径
var buffer = Properties.Resources.Excel模板;
using (Stream output = File.OpenWrite(fileName))
{
output.Write(buffer, 0, buffer.Length);
}
// 加载 Excel 工作簿
Workbook workbook = Workbook.Load(fileName);
// 选择第一个工作表
Worksheet sheetHeader = workbook.Worksheets[0];
// 移除现有合并单元格
sheetHeader.MergedCellsRegions.Remove(sheetHeader.Rows[0].GetCellAssociatedMergedCellsRegion(0));
// 添加新的合并单元格
WorksheetMergedCellsRegion sheetRegion = sheetHeader.MergedCellsRegions.Add(0, 0, 0, 12);
// 设置合并单元格的值
sheetRegion.Value = "标题1";
// 设置水平对齐方式
sheetRegion.CellFormat.Alignment = HorizontalCellAlignment.Center;
// 设置垂直对齐方式
sheetRegion.CellFormat.VerticalAlignment = VerticalCellAlignment.Center;
// 开启自动换行
sheetRegion.CellFormat.WrapText = ExcelDefaultableBoolean.True;
// 调整行高
sheetHeader.Rows[1].Height = sheetHeader.Rows[1].Height * 3;
// 设置单元格值
sheetHeader.Rows[1].Cells[1].Value = DateTime.Now; // 订货日期
sheetHeader.Rows[1].Cells[2].Value = "文字"; // 销售员
// 设置单元格对齐方式
sheetHeader.Rows[1].Cells[2].CellFormat.Alignment = HorizontalCellAlignment.Center;
sheetHeader.Rows[1].Cells[2].CellFormat.VerticalAlignment = VerticalCellAlignment.Center;
// 开启自动换行
sheetHeader.Rows[1].Cells[2].CellFormat.WrapText = ExcelDefaultableBoolean.True;
// 保存 Excel 文件
workbook.Save(fileName);
本文通过详细的代码示例,展示了如何使用 Infragistics 组件库在 C# 中实现工具栏、Grid 和 Excel 导出功能,帮助开发者提高开发效率和用户体验。