Devexpress Gridcontrol 合并行,列头
2013-09-24 19:09
441 查看
一、合并列头
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Text; usingSystem.Windows.Forms; usingDevExpress.XtraEditors; usingDevExpress.XtraGrid.Columns; usingDevExpress.XtraGrid.Views.Base; usingDevExpress.XtraGrid.Views.BandedGrid; usingDevExpress.XtraEditors.Repository; namespaceXtraGridDemo1 { publicpartialclassXtraForm1:DevExpress.XtraEditors.XtraForm { publicXtraForm1() { InitializeComponent(); //首先拖到窗体上一个GridControl,在表格上点击“Clickheretochangeview”链接,在弹出菜单中选择“convertto”-->“AdvBandedGridView”。 InitGrid(); } privatevoidXtraForm1_Load(objectsender,EventArgse) { } ///初始化表格 privatevoidInitGrid() { //advBandedGridView1是表格上的默认视图,注意这里声明的是:BandedGridView BandedGridViewview=advBandedGridView1asBandedGridView; 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=false;//是否允许用户编辑单元格 //添加列标题 GridBandbandID=view.Bands.AddBand("ID"); bandID.Visible=false;//隐藏ID列 GridBandbandName=view.Bands.AddBand("姓名"); GridBandbandSex=view.Bands.AddBand("性别"); GridBandbandBirth=view.Bands.AddBand("出生日期"); GridBandbandScore=view.Bands.AddBand("分数"); GridBandbandMath=bandScore.Children.AddBand("数学"); GridBandbandChinese=bandScore.Children.AddBand("语文"); GridBandbandEnglish=bandScore.Children.AddBand("英语"); GridBandbandSubTotal=bandScore.Children.AddBand("小计"); GridBandbandRemark=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=newList<Record>(); listDataSource.Add(newRecord(1,"张三","男",Convert.ToDateTime("1989-5-6"),115.5f,101,96,"")); listDataSource.Add(newRecord(2,"李四","女",Convert.ToDateTime("1987-12-23"),92,85,87,"")); listDataSource.Add(newRecord(3,"王五","女",Convert.ToDateTime("1990-2-11"),88,69,41.5f,"")); listDataSource.Add(newRecord(4,"赵六","男",Convert.ToDateTime("1988-9-1"),119,108,110,"备注行")); //绑定数据源并显示 gridControl1.DataSource=listDataSource; gridControl1.MainView.PopulateColumns(); //[小计]这一列因为没绑定数据源,所以需要手动添加 //(有点复杂,慢慢看吧) string[]fieldNames=newstring[]{"SubTotal"}; GridColumncolumn;//声明单列 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+=new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(advBandedGridView1_CustomUnboundColumnData); //[性别]列绑定ComboBox RepositoryItemComboBoxriCombo=newRepositoryItemComboBox(); riCombo.Items.AddRange(newstring[]{"男","女"}); gridControl1.RepositoryItems.Add(riCombo); view.Columns["Sex"].ColumnEdit=riCombo; //[出生年月]列绑定Date RepositoryItemDateEditriDate=newRepositoryItemDateEdit(); gridControl1.RepositoryItems.Add(riDate); view.Columns["Birth"].ColumnEdit=riDate; //[分数]列绑定SpinEdit RepositoryItemSpinEditriSpin=newRepositoryItemSpinEdit(); gridControl1.RepositoryItems.Add(riSpin); view.Columns["Math"].ColumnEdit=riSpin; view.Columns["Chinese"].ColumnEdit=riSpin; view.Columns["English"].ColumnEdit=riSpin; //[备注]列绑定MemoExEdit RepositoryItemMemoExEditriMemoEx=newRepositoryItemMemoExEdit(); 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();//结束视图的编辑 } //计算小计 privatefloatcalcSubTotal(floatmath,floatchinese,floatenglish) { returnmath+chinese+english; } privatevoidadvBandedGridView1_CustomUnboundColumnData(objectsender,CustomColumnDataEventArgse) { ColumnViewcolView=senderasColumnView; 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接口的数据源 publicclassRecord { intid; DateTimebirth; stringname,sex,remark; floatmath,chinese,english; publicRecord(intid,stringname,stringsex,DateTimebirth,floatmath,floatchinese,floatenglish,stringremark) { this.id=id; this.name=name; this.sex=sex; this.birth=birth; this.math=math; this.chinese=chinese; this.english=english; this.remark=remark; } publicintID{get{returnid;}} publicstringName { get{returnname;} set{name=value;} } publicstringSex { get{returnsex;} set{sex=value;} } publicDateTimeBirth { get{returnbirth;} set{birth=value;} } publicfloatMath { get{returnmath;} set{math=value;} } publicfloatChinese { get{returnchinese;} set{chinese=value;} } publicfloatEnglish { get{returnenglish;} set{english=value;} } publicstringRemark { get{returnremark;} set{remark=value;} } } #endregion } }
二、合并行:
gv1.OptionsView.AllowCellMerge=true;
相关文章推荐
- Devexpress Gridcontrol 合并表头
- 【转】Devexpress使用之:GridControl控件(合并表头)
- DevExpress GridControl 跨列横向合并单元格两个官方例子
- Devexpress GridControl 如何合并单元格
- WinForm编程入门--DEVEXPRESS GridControl(续)
- DevExpress的GridControl如何实现打印和打印预览 z
- 在DevExpress GridControl的一列中显示图片
- DevExpress GridControl使用方法总结
- DEVExpress GridControl数据源是List<T> 或 DataTable读取单元格里面的值
- DevExpress GridControl 按扭列的操作
- DevExpress GridControl 动态创建字段及主细关系表过程
- [DevExpress]关于GridControl中SummaryItem使用总结 /12.1版本
- DevExpress GridControl 控件添加选择框
- Devexpress的gridControl中将某一个repositoryItem的Cell设为不可见
- DevExpress GridControl 单元格添加进度条(ProgressBar)
- Devexpress Gridcontrol各种记录
- DevExpress 控件使用之GridControl基本属性设置
- 解决 DevExpress GridControl 数据编辑后无法保存
- DevExpress gridControl 布局(Layout)保存与读取----3
- devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现