Devexpress使用之:GridControl控件

2024-04-01 16:18

本文主要是介绍Devexpress使用之:GridControl控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:http://www.cnblogs.com/habin/archive/2009/04/24/1442613.html


Devexpress系列控件功能很强大,使用起来也不太容易,我也是边摸索边使用,如果有时间我会把常用控件的使用方法整理出来的。


using System;using System.Collections.Generic;using System.ComponentModel;using System.Windows.Forms;using DevExpress.XtraGrid.Columns;using DevExpress.XtraGrid.Views.Base;using DevExpress.XtraGrid.Views.BandedGrid;using DevExpress.XtraEditors.Repository;namespace XtraGridDemo1{public partial class Form1 : DevExpress.XtraEditors.XtraForm{public Form1(){InitializeComponent();//首先拖到窗体上一个GridControl,在表格上点击“Click here to change view”链接,在弹出菜单中选择“convert to”-->“AdvBandedGridView”。InitGrid();}///初始化表格private void InitGrid(){// advBandedGridView1是表格上的默认视图,注意这里声明的是:BandedGridViewBandedGridView view = advBandedGridView1 as BandedGridView;view.BeginUpdate(); //开始视图的编辑,防止触发其他事件view.BeginDataUpdate(); //开始数据的编辑view.Bands.Clear();//修改附加选项view.OptionsView.ShowColumnHeaders = false;                         //因为有Band列了,所以把ColumnHeader隐藏view.OptionsView.ShowGroupPanel = false;                            //如果没必要分组,就把它去掉view.OptionsView.EnableAppearanceEvenRow = false;                   //是否启用偶数行外观view.OptionsView.EnableAppearanceOddRow = true;                     //是否启用奇数行外观view.OptionsView.ShowFilterPanelMode = ShowFilterPanelMode.Never;   //是否显示过滤面板view.OptionsCustomization.AllowColumnMoving = false;                //是否允许移动列view.OptionsCustomization.AllowColumnResizing = false;              //是否允许调整列宽view.OptionsCustomization.AllowGroup = false;                       //是否允许分组view.OptionsCustomization.AllowFilter = false;                      //是否允许过滤view.OptionsCustomization.AllowSort = true;                         //是否允许排序view.OptionsSelection.EnableAppearanceFocusedCell = true;           //???view.OptionsBehavior.Editable = true;                               //是否允许用户编辑单元格//添加列标题GridBand bandID = view.Bands.AddBand("ID");bandID.Visible = false; //隐藏ID列GridBand bandName = view.Bands.AddBand("姓名");GridBand bandSex = view.Bands.AddBand("性别");GridBand bandBirth = view.Bands.AddBand("出生日期");GridBand bandScore = view.Bands.AddBand("分数");GridBand bandMath = bandScore.Children.AddBand("数学");GridBand bandChinese = bandScore.Children.AddBand("语文");GridBand bandEnglish = bandScore.Children.AddBand("英语");GridBand bandSubTotal = bandScore.Children.AddBand("小计");GridBand bandRemark = view.Bands.AddBand("备注");//列标题对齐方式bandName.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandSex.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandBirth.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandScore.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandMath.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandChinese.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandEnglish.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandSubTotal.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;bandRemark.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;//模拟几个数据List<Record> listDataSource = new List<Record>();listDataSource.Add(new Record(1, "张三","男",Convert.ToDateTime("1989-5-6") ,115.5f,101,96,""));listDataSource.Add(new Record(2, "李四", "女", Convert.ToDateTime("1987-12-23"), 92, 85, 87, ""));listDataSource.Add(new Record(3, "王五", "女", Convert.ToDateTime("1990-2-11"), 88, 69, 41.5f, ""));listDataSource.Add(new Record(4, "赵六", "男", Convert.ToDateTime("1988-9-1"), 119, 108, 110, "备注行"));//绑定数据源并显示gridControl1.DataSource = listDataSource;gridControl1.MainView.PopulateColumns();//[小计]这一列因为没绑定数据源,所以需要手动添加//(有点复杂,慢慢看吧)string[] fieldNames = new string[] { "SubTotal" };GridColumn column;   //声明单列column = view.Columns.AddField(fieldNames[0]);  //添加一个数据字段column.VisibleIndex = view.Columns.Count -1;  //设置该列在编辑视图时的显示位置(倒数第二列)  column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;column.OptionsColumn.AllowEdit = false;     //此列不可编辑column.Visible = true;view.Columns.Add(column);   //视图中添加一列//绑定事件,当[分数]改变时[小计]也跟着变//(好像只有在绑定事件里才能改变该单元格数值,直接修改无效)view.CustomUnboundColumnData += newDevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(advBandedGridView1_CustomUnboundColumnData);//[性别]列绑定ComboBoxRepositoryItemComboBox riCombo = new RepositoryItemComboBox();riCombo.Items.AddRange(new string[] {"男", "女"});gridControl1.RepositoryItems.Add(riCombo);view.Columns["Sex"].ColumnEdit = riCombo;//[出生年月]列绑定DateRepositoryItemDateEdit riDate = new RepositoryItemDateEdit();gridControl1.RepositoryItems.Add(riDate);view.Columns["Birth"].ColumnEdit = riDate;//[分数]列绑定SpinEditRepositoryItemSpinEdit riSpin = new RepositoryItemSpinEdit();gridControl1.RepositoryItems.Add(riSpin);view.Columns["Math"].ColumnEdit = riSpin;view.Columns["Chinese"].ColumnEdit = riSpin;view.Columns["English"].ColumnEdit = riSpin;//[备注]列绑定MemoExEditRepositoryItemMemoExEdit riMemoEx = new RepositoryItemMemoExEdit();gridControl1.RepositoryItems.Add(riMemoEx);view.Columns["Remark"].ColumnEdit = riMemoEx;//小计列添加汇总view.OptionsView.ShowFooter = true;     //显示表格页脚view.Columns["SubTotal"].SummaryItem.FieldName = "SubTotal";view.Columns["SubTotal"].SummaryItem.DisplayFormat = "{0:f2}";view.Columns["SubTotal"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average;//将标题列和数据列对应view.Columns["ID"].OwnerBand = bandID;view.Columns["Name"].OwnerBand = bandName;view.Columns["Sex"].OwnerBand = bandSex;view.Columns["Birth"].OwnerBand = bandBirth;view.Columns["Math"].OwnerBand = bandMath;view.Columns["Chinese"].OwnerBand = bandChinese;view.Columns["English"].OwnerBand = bandEnglish;view.Columns["SubTotal"].OwnerBand = bandSubTotal;view.Columns["Remark"].OwnerBand = bandRemark;view.EndDataUpdate();//结束数据的编辑view.EndUpdate();   //结束视图的编辑}// 计算小计private float calcSubTotal(float math, float chinese, float english){return math + chinese + english;}private void advBandedGridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e){ColumnView colView = sender as ColumnView;if (e.Column.FieldName == "SubTotal" && e.IsGetData) e.Value = calcSubTotal(Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["Math"])),Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["Chinese"])),Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["English"])));}#region 运行时绑定到实现Ilist接口的数据源public class Record{int id;DateTime birth;string name, sex, remark;float math, chinese, english;public Record(int id, string name, string sex, DateTime birth, float math, float chinese, float english, string remark){this.id = id;this.name = name;this.sex = sex;this.birth = birth;this.math = math;this.chinese = chinese;this.english = english;this.remark = remark;}public int ID { get { return id; } }public string Name{get { return name; }set { name = value; }}public string Sex{get { return sex; }set { sex = value; }}public DateTime Birth{get { return birth; }set { birth = value; }}public float Math{get { return math; }set { math = value; }}public float Chinese{get { return chinese; }set { chinese = value; }}public float English{get { return english; }set { english = value; }}public string Remark{get { return remark; }set { remark = value; }}}#endregion}}


这篇关于Devexpress使用之:GridControl控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/867599

相关文章

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

SpringCloud中的@FeignClient注解使用详解

《SpringCloud中的@FeignClient注解使用详解》在SpringCloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章... 在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解