Dev控件研究(一) gridcontrol简单使用
- 格式:doc
- 大小:70.50 KB
- 文档页数:10
GridControl详解(一)原汁原味的表格展示Dev控件中的表格控件GridControl控件非常强大。
不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。
使用过程中,多半借助Demo和英文帮助文档。
网上具体的使用方法也多半零碎。
偶遇一个简单而且详细的使用文档。
好记性不如烂笔头!转载过来,整理整理发出来做个记录,总共有十个小节。
做的非常精细,非常感谢原作者。
插件所在位置使用时拖拽过来,如下所示即使拖拽过来原封不动的样子:在程序中写入构建一个表格的代码:[csharp]view plaincopyprint?1. private DataTable InitDt()2.{3.DataTable dt = new DataTable("个人简历");4.dt.Columns.Add("id",typeof(int));5.dt.Columns.Add("name", typeof(string));6.dt.Columns.Add("sex", typeof(int));7.dt.Columns.Add("address", typeof(string));8.dt.Columns.Add("aihao", typeof(string));9.dt.Columns.Add("photo", typeof(string));10.dt.Rows.Add(new object[] { 1, "张三", 1, "东大街6号", "看书", "" });11.dt.Rows.Add(new object[] { 1, "王五", 0, "西大街2号", "上网,游戏", "" });12.dt.Rows.Add(new object[] { 1, "李四", 1, "南大街3号", "上网,逛街", "" });13.dt.Rows.Add(new object[] { 1, "钱八", 0, "北大街5号", "上网,逛街,看书,游戏", "" });14.dt.Rows.Add(new object[] { 1, "赵九", 1, "中大街1号", "看书,逛街,游戏", "" });15.return dt;16.}17.<P> </P>书写gridControl1绑定数据方法:[csharp]view plaincopyprint?1. private void BindDataSource(DataTable dt)2.{3.//绑定DataTable4.gridControl1.DataSource = dt;5.//绑定DataSet6.//gridControl1.DataSource = ds;7.//gridControl1.DataMember = "表名";8.}程序调用:BindDataSource(InitDt());呈现结果如下:GridControl详解(二)表格的列名配置点击Run Designer控件上的按钮,弹出视图设计窗口:列配置:我们配置完列名后,会发现设计视图发生了变化:运行结果:GridControl详解(三)列数据的格式设置为了测试方便,我们加入新的3列,格式分别是数据,时间,字符串。
devexpress表格控件gridcontrol设置隔⾏变⾊、焦点⾏颜⾊、设置(改变)显。
介绍⼀些常⽤的gridcontrol设置。
1、设置隔⾏变⾊。
⾸先设置显⽰隔⾏变⾊,步骤:OptionsView-->EnableAppearanceEvenRow-->true和OptionsView-->EnableAppearanceOddRow-->true;然后设置奇数⾏和偶数⾏样式颜⾊等:Appearance-->EvenRow和Appearance-->OddRow。
设计完成后,设计器出现隔⾏变⾊效果,如图:2、设置奇偶⾏样式时,会看到其他⾏样式。
Appearance-->FoucsedRow就是焦点⾏颜⾊,设置后可突出显⽰焦点⾏样式,如图所⽰:3、设置显⽰值,有个两种⽅法。
第⼀种可以在如图所⽰地⽅设置,列显⽰出来就会加上单位元;⽤的最多的⼀般是设置⽇期样式yyyy年MM ⽉dd⽇:第⼆种可使⽤代码改变,代码如下:/// <summary>/// 改变显⽰值/// </summary>private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e){if (e.Column.FieldName == "A3"){if (e.Value.ToString() == "1")e.DisplayText = "男";elsee.DisplayText = "⼥";}}4、有时表格列太多,需要拖动查看,但是⼜希望某些列能始终固定不移动。
这个时候就可以设置该列为固定列了,属性如图所⽰:5、运⾏效果图:附加内容:根据条件改变⾏的样式(字体颜⾊、背景颜⾊、渐变⾊)private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e){int hand = e.RowHandle;//⾏号if(hand<0){return;}DataRow dr = gridView1.GetDataRow(hand);if (dr == null)return;//int selectedHandle = gridView1.GetSelectedRows()[hand];if (gridView1.GetRowCellValue(hand, "CODE").ToString().Contains("5")){e.Appearance.ForeColor = Color.Red;//字体颜⾊e.Appearance.BackColor=Color.Linen;//⾏背景颜⾊//e.Appearance.BackColor2 = Color.Blue;//渐变颜⾊}}。
目录1. DevExpress控件组中的GridControl控件不能使横向滚动条有效。
(2)2. 使单元格不可编辑。
(2)3. 没有下拉滚动条事件怎么办? (2)4. 获取选定行,指定列单元格的内容 (2)5. 去除"Drag a Column Header Here To Group by that Column" (3)6. 在gridcontrol中添加checkbox复选框 (3)7. 单元格合并问题 (4)8. gridView 奇行与偶行交替变色 (4)9. girdView在第一列显示行号 (4)10. 选中某列进行排序时,如何让该列高亮显示 (5)11. XtraGrid冻结列 (5)(由于开始使用DevExpress控件了,所以要点滴的记录一下)1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。
现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。
解决:gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。
2.使单元格不可编辑。
gridcontrol -->gridview -->OptionsBehavior -->Editable=false3.没有下拉滚动条事件怎么办?现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求.TopRowChanged事件.4.获取选定行,指定列单元格的内容private string GetSelectOID(){int[] pRows = this.gridView1.GetSelectedRows();if (pRows.GetLength(0) > 0)return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString ();elsereturn null;}//mOIDFiledName为要获取列的列名5.去除"Drag a Column Header Here To Group by that Column"属性Gridview->Option View->Show Group Panel=false,就好了6.在gridcontrol中添加checkbox复选框gridview->run designer->columns->选择要变成复选框的那一列->column edit->new(在这里可以选择很多类型)加载checkbox数据时,费了一点时间,checkbox的复选框怎么点击,一失去焦点是,选择的操作就无效了,问题就出在datatable的绑定上了,一定要绑定一个布尔的类型.代码是这样滴!private void FrmCreateLegend_Load(object sender, EventArgs e){IFeatureLayer pFeatureLayer;IDataset pDataset;string pName;DataTable pDatatable = new DataTable();pDatatable.Columns.Add("图层名称", System.Type.GetType("System.String"));pDatatable.Columns.Add("选择", System.Type.GetType("System.Boolean"));DataRow pDataRow;object[] rowArray = new object[2];for (int i = 0; i < mFeatureLayers.Count; i++){pDataRow = pDatatable.NewRow();pFeatureLayer = mFeatureLayers[i] as IFeatureLayer;rowArray[0] = ;rowArray[1] = false;pDataRow.ItemArray = rowArray;pDatatable.Rows.Add(pDataRow);}this.gridMark.DataSource = pDatatable;this.gridMark.Refresh();}注意:创建的datatable的列名一定要和gridview中的列的fieldname属性值是一个名字,不然,你会发现添加了和你绑定的datatalbe一样多的行,可是行里面却没有内容的.第三方控件GridControl 使用技巧自开始接触此第三方控件至今三个月,经常使用,三个月中碰到一些问题,一一解决,如是现在整理使用的内容:7.单元格合并问题(1)窗体加载时ceMerging.Checked = gridView1.OptionsView.AllowCellMerge;(2)添加事件private void ceMerging_CheckedChanged(object sender, EventArgs e){gridView1.OptionsView.AllowCellMerge = ceMerging.Checked;}8.gridView 奇行与偶行交替变色this.gridView1.OptionsView.EnableAppearanceEvenRow = true;this.gridView1.OptionsView.EnableAppearanceOddRow = true;this.gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));eBackColor = true;this.gridView1.Appearance.OddRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));eBackColor = true;9.girdView在第一列显示行号//调整第一列的宽度this.gridView1.IndicatorWidth = 40;//添加监听事件this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(this.gridView1_Custom DrawRowIndicator);//事件private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e){if (.IsRowIndicator && e.RowHandle >= 0){.DisplayText =Convert.ToString(Convert.ToInt32(e.RowHandle.ToString())+1);}}10.选中某列进行排序时,如何让该列高亮显示在gridView1的"EndSorting"事件中加入以下代码private void gridView1_EndSorting(object sender, EventArgs e){Color clr = gridView1.Appearance.Row.BackColor;foreach (DevExpress.XtraGrid.Columns.GridColumn dc in gridView1.Columns){if (dc.VisibleIndex == gridView1.SortedColumns[0].VisibleIndex){dc.AppearanceCell.BackColor = Color.Red;}else{dc.AppearanceCell.BackColor = clr;}}}11.XtraGrid冻结列XtraGrid的GridView中的Columns里面有Fixed属性Devpress.XtraGrid.GridControl1,增加新行用InitNewRow事件,给新行某字段赋值。
DevExpress之GridControl控件⼩知识DevExpress之GridControl控件⼩知识⼀.当代码中的DataTable中有建数据关系时,DevExpress 的 GridControl 会⾃动增加⼀个⼦视图 .列名也就是⼦表的字段名 ,按下⾯⽅法⾃定义⼦视图DevExpress控件,当Table建⽴关系后,⼦表显⽰的Grid设置,在不设置的情况下默认显⽰⼀个Grid,但列头的名字为数据源的列名需要更改列头的描述必须⾃定义⼀个Grid,步骤:1.[Clike here to create a new leve]点击此处创建⼀个Leve2.单建刚建出的Leve右边的[Click here to change view]选择⼀个View类型3.为GridControl增加LeveDefault,例如:MyGridControl.LevelDefaults.Add(RelationName,gridview);RelationName:DataSet中关系名gridview:第⼆步建⽴的GridView的名称⼆.DevExpress⼦视图的访问--当需要访问⽗视图中的⾏对应的⼦视图中的数据DevExpress.XtraGrid.Views.Grid.GridView bv =(DevExpress.XtraGrid.Views.Grid.GridView) gvMain.GetDetailView(MyGridControl.FocusedRowHandle,0) ; //0是关系索引for(int i=0 ;i<bv.DataRowCount ;i++){bv.GetDataRow(i)["列名"] = 值 ;}三.视图中的列为DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit 类型,但不想让⽤户看到下拉按钮编辑DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit控件,找到属性Buttons ,删除⾥⾯所有Button四.DevExpress设置控件脚处的汇总格式DevExpress控件SummaryItem.DisplayFormat={0:#} (数值类型)==================================================================devexpress 显⽰⾏号为XtraGrid的GridView加⾏号。
DevExpress中GridControl的属性设置1. 隐藏最上面的GroupPanelgridView1.OptionsView.ShowGroupPanel=false;2.得到当前选定记录某字段的值sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();3.数据只读gridView1.OptionsBehavior.Editable=false;4.不显示MasterDetailViewgridView1.OptionsDetail.EnableMasterViewMode=false;5.修改最上面的GroupPanel内容gridView1.GroupPanelText="CSDN";6.数据绑定:FieldName --数据库的字段名称7.读写拷贝权限设置ColumnView.EditableThis property returns a value of the ColumnViewOptionsBehavior.Editable option不可写ColumnViewOptionsBehavior.EditableGets or sets whether end users are allowed to invoke cell editors可读可写OptionsColumn.AllowEditGets or sets whether end users are allowed to invoke editors for the column's cells.可读可写只有ColumnViewOptionsBehavior.Editable=True 设置OptionsColumnAllowEdit 才有意义。
OptionsColumn.ReadOnlyGets or sets whether end-users are prevented from editing the column's cell values.可读可写只读不可拷贝:ColumnViewOptionsBehavior.Editable = False只读可拷贝:ColumnViewOptionsBehavior.Editable = TrueOptionsColumn.AllowEdit = TrueOptionsColumn.ReadOnly = True可编辑:ColumnViewOptionsBehavior.Editable = TrueOptionsColumn.AllowEdit = TrueOptionsColumn.ReadOnly = False获取选中行的值代码:private void gridData_FocusedRowChanged(object sender,DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e){_id=GWEntLib.Utilities.Mix.ConvertUtils.ToInt32(gridData.GetRowCellValu(e.Focu sedRowHandle, "Id"));_emrFileReadList = EMRTemplateFileReadList.GetEMRTemplateFileReadList(_id);gridVersonData.DataSource = _emrFileReadList;}响应事件:FocusedRowChanged获取字段值:gridData.GetRowCellValue(e.FocusedRowHandle, "Id")注意:FocusedRowChanged是Gridview的事件而不是gridControl的事件gridControl与Gridview的区别:前者是容器,后者为视图全选/取消全选private void Form1_Load(object sender, EventArgs e){String str =@”select cast( 0 as bit ) 选择,ID,NameFrom ”DataTable dt =new DataTable();dt =SqlHelper.ExecuteDataset(str).Tables[0];gridView.DataSource =dt;}#region全选private void tsbSelectAll_Click(object sender, EventArgs e){for (int i = 0; i < gridView.RowCount; i++){gridView.SetRowCellValue(i, gridView.Columns.ColumnByFieldName("选择"), true);}}#endregion#region取消全选private void tsbUnSelectAll_Click(object sender, EventArgs e){for (int i = 0; i < gridView.RowCount; i++){gridView.SetRowCellValue(i, gridView.Columns.ColumnByFieldName("选择"), false);}}#endregion。
DevExpress控件之GridControl控件(代码篇)Developer Express(以下简称dev) 这个第三⽅控件是VS2005⾃带的datagridview控件的重写版本.对于⼀些grid外观,模板列的设置有⾮常简单的⽅法.⽽且控制起来基本和 datagridview⼀样.所以还是⽐较⽅便的.把dev控件拖到窗体以后,会发现多了两个控件gridcontrol1,gridview1,下⾯针对这期间使⽤dev的⼀些总结写在下⾯(主要是连接数据库,绑定字段和模板列的设置):1. 设置数据源:string sql = "select fid,fname from dual";DataTable dt = DALUse.Query(sql).Tables[0];gridControl1.DataSource = dt;*:Daluse是项⽬数据库连接基类,不⽤特别理会2.绑定字段:这部分⼯作主要是在Designer中进⾏的,dev的Designer设计器提供了⾮常⽅便的设置⽅式.我么可以省去敲代码,直接在设计器中就可以完成了.在左边选Columns,添加完列以后,在列的FieleName属性添加你要绑定列的字段名(ps:⽐如我的连接SQL语句是:select fid,fname from dual.我想要把fid绑定到列1.那就在列1的FieldName属性写FID就可以了 ),这⾥有⾮常重要的⼀点,对于Oracle数据库,所有的在设计器⾥写的程序中的字段名必须⼤写,否则可能绑定不上字段,sqlserver没有这个限制.通过代码其实也可以实现,具体代码如下:gridView1.Columns[0].FieldName = "FID";*:gridcontrol只⽤在设置数据源,以后的操作⼤多都有gridview这个控件了.他们是⼀体的,可以在页⾯的设计代码中找到将他们关联的⼀句话,这是系统⾃动写的:gridcontrol1.mainview=this.gridview1.2. 模板列的设置:模板列可以很轻松的让⽤户实现在表格中进⾏查找编辑.同样,这部分⼯作在dev的Designer中进⾏.在左边选In-Place Editor Repository,上⾯的ADD提供了⽐较丰富的模板列类型,从中选取⼀个就可以了.模板列建好以后就要和我们当前有的数据列进⾏绑定了.返回到 Columns中,假如列1是我们想设定的,在他的属性中找到ColumnEdit.选择我们加进去的模板列就可以了.对于模板列我们最常⽤的还是 LookUpEdit.这⾥简单说下他的设置和⽤法:LookUpEdit是弹出的⼀个⼩的grid,从它⾥⾯我们可以实现⾃动筛选⾥⾯的信息.⾸先从In-Place Editor Repository中添加LookUpEdit.取名为Re1.然后.在他的Columns属性中添加3列.Caption依次为:编号,姓名,性别.FieldName依次为:FID,FNAME,FSEX.然后将Re1的NullText设置成空.AutoSearchColumnIndex属性设置为2.ImmediatePopup属性设置为True.SearchMode设置为OnlyInPopup.然后将这个模板列附加到我们上⾯提到的列1(也就是将列1的ColumnEdit属性设成Re1)最后我们还要在代码⾥⾯给Re1绑定数据源和显⽰项.Re1.DataSource = DALUse.Query("select fid,fname,fsex from dual").Tables[0];Re1.DisplayMember = "FSEX";Re1.ValueMember = "FNAME";*:对于Oracle数据库字段⼀定要⽤⼤写,切记!!⾄此,我们的LookUpEdit模板列就设置完成了,它现在已经实现了通过性别列检索,然后将姓名列附到我们的列1上.对于LookUpEdit可以实现过滤主要是AutoSearchColumnIndex和SearchMode属性.可以参见帮助知道它们的⽤法: ms-help://v7.2/DevExpress.XtraEditors/DevExpressXtraEditorsControlsSearchModeEnumtopic.htmPs://去掉上⾯的筛选条gridView1.OptionsView.ShowGroupPanel = false;//设某⼀列只读或者不可编辑gridView1.Columns[0].OptionsColumn.AllowEdit = false;gridView1.Columns[0].OptionsColumn.ReadOnly = false;// 设某⼀列⽂字和标题局中显⽰ gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment =DevExpress.Utils.HorzAlignment.Center;gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;//去掉某⼀列上⾯的⾃动筛选功能(Filter) gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;gridView1.Columns[0].OptionsFilter.AllowFilter = false; gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter = false; //设置冻结列(左冻结)gridView1.Columns[0].Fixed= DevExpress.XtraGrid.Columns.FixedStyle.Left;//得到单元格数据(0⾏0列)string ss=gridView1.GetRowCellDisplayText(0, gridView1.Columns[0]);string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);//设置单元格数据(将0⾏0列的单元格赋值123)gridView1.SetRowCellValue(0, gridView1.Columns[0], "123");//⼿动添加dev的列DevExpress.XtraGrid.Columns.GridColumn Col1=new DevExpress.XtraGrid.Columns.GridColumn ();Col1.FieldName="FID";Col1.Visible=true;Col1.VisibleIndex=gridView1.Columns.Count;gridView1.Columns.Add(Col1);//设置⾃动增加的⾏号,需要先添加给gridview添加事件CustomDrawRowIndicatorprivate void gridview_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e){if (.IsRowIndicator && e.RowHandle >= 0).DisplayText = (e.RowHandle + 1).ToString();}//添加datatable数据⾏,数据列DataTable dt = new DataTable();dt.Columns.Add("Col1");DataRow dr = dt.NewRow();dr[0] = "123";dt.Rows.Add(dr);*以上这些都可以在Designer中进⾏设置,⽽不⽤去敲代码对于第三⽅控件的整体修改和保存,具体说明如下:1. 删除: (修改了dgvdel⾥的datagridviewdel⽅法)public static void datagridviewdel_Dev(DevExpress.XtraGrid.Views.Grid.GridView Mydgv){if (MessageBox.Show("你确定要删除选中的记录吗?", "删除提⽰", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes){int iSelectRowCount = Mydgv.SelectedRowsCount;if (iSelectRowCount > 0){Mydgv.DeleteSelectedRows();}}}2. 新增: (对于新增,其本⾝的AddNewRow⽅法就可以做到)private void btn_add_Click(object sender, EventArgs e){gridView1.AddNewRow();}具体如果对于新加⾏还有什么特别的设置,可以在它gridView1_InitNewRow事件中填写:private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e){ColumnView View = sender as ColumnView;View.SetRowCellValue(e.RowHandle, View.Columns[0],gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[0])); //复制最后⼀⾏的数据到新⾏ View.SetRowCellValue(e.RowHandle, View.Columns[1],gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[1])); //复制最后⼀⾏的数据到新⾏ }3. 保存 (第三⽅控件提供的RefreshData和RefreshDataSource⽅法对于保存数据都不好使,最后还是使⽤了Dgvsave的datagridviewsave⽅法,⽤这个⽅法就可以)注:代码中出现多gridView1全为第三⽅控件的gridView.⽰例:去掉上⾯的”Drag a column header here to group by that column”我们拖动⼀个gridcontrol控件后,在出现上会出现⼀下效果:他默认的好多地⽅都是⽤英⽂表⽰出来的,所以我们得⽤⼀些相关的属性设置来达到我们实际想要达到的效果.⾸先就是要去掉上⾯的⼀个英⽂条”Drag a column header here to group by that column”.我们可以通过⼿⼯设置和代码编写来实现,以后针对第三⽅控件的属性都可以⽤这两种⽅法来实现.⼿⼯设置:点击左下⾓的”Run Designer”按钮.这样我们就进⼊了Dev的设计器(所有的对于控件的控制都可以在这⾥设置).然后点击左边的Main选项卡中的 Views项.有边栏⽬⾥会出现N多属性,我们找到OptionViews,展开它,然后将⾥⾯的ShowGroupPanel属性设成false就OK 了.代码编写:我们可以直接在构造函数或者页⾯的打开事件中写⼊代码:gridView1.OptionsView.ShowGroupPanel = false;两种⽅法可以达到同样的效果.设置外观接下来我们来设置它的外观.Dev给我们提供了很多外观的模板,这样使得我们不⽤在通过复杂的代码来设置他的外观,我们直接⽤⼿⼯设置就可以完成了!点击Dev设计器中左边的Appearance选项卡的Style Schemes项:通过在⾥⾯设置外观,然后点击右⼩⾓的Apply按钮就可以很轻松的设置各种各样的外观了.去掉控件默认的Filter功能出现英⽂的情况我们按照上⾯所讲的⽅法给Dev添加列后,在点击列头的⼩按钮的时候会出现这样的效果(出现了我们不想看到的英⽂):这个对于我们来说是⽐较讨厌的.我们可以在Dev的设计器中消灭它.点击设计器中左边的Main选项卡的Columns项.选择你想设置的列,然后点击右上⾓他们的选项卡:选择Filter options选项卡,然后将⾥⾯的AllowAutoFilter,AllowFilter,ImmediateUpdateAutoFilter属性分别设成false就可以了.这样这列的AutoFilter功能就去掉了(仅限于这列)!如果你够细⼼的话,你会发现上⾯的选项卡Column options⾥⾯的属性也都是特别使⽤的:这⾥⾯的属性不⽤说,我想你也知道怎么⽤了(他也是只针对⼀列设置的).关闭右键点击列头会出现英⽂的情况:在Dev的设计器中选择左边Main选项卡中的Views项.找到OptionsMenu,然后展开,将⾥⾯的EnableColumnMenu设成false就可以了.。
devgridcontrol(一)绑定值Dev组件包功能强大,但说明性的文档太少也给我们使用带来的很大的障碍。
最近项目需要使用Dev控件,把点点滴滴记录在这里备忘。
1,适当调整列宽(当列很多时)gridView1.OptionsView.ColumnAutoWidth= false;gridView1. BestFitColumns();2,多选gridView1 .OptionsSelection.MultiSelect = true;gridView1 .OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;3,添加复选框列添加一列,FieldName为 "check",将ColumnEdit 设置为复选框样式。
将要绑定的DataTable添加列 "check",Type 为 bool。
绑定DataTable到GridControl。
获取:string value = gridview.GetDataRow(i)["check"].toString();value == "true" || "" ("false")4,GroupPanel设置gridView1.GroupPanelText="title";gridView1.OptionsView.ShowGroupPanel=false;gridView1.OptionsView.ShowGroupPanel = false;取消显示头部的pannelgridView1.OptionsView.EnableAppearanceOddRow = true;奇偶显示选中变色gridView2.Appearance.FocusedRow.BackColor = System.Drawing.Color.RoyalBlue;设成只读1. gridView1.OptionsBehavior.Editable = false;2. gridView1.Columns[5].readonly= true;左边表头去掉gridView1.Options.OptionView .ShowIndicator=False;--------------------------------------------------------------------------------------------------------------------------------------------------------取值1.private void gridControl1_DoubleClick(object sender, System.EventArgs e){//双击弹出异常日志描述if (this.gridView1.RowCount > 0){int[] a=this.gridView1.GetSelectedRows();stringstr_GUID=this.gridView1.GetRowCellValue(a[0],"Ex_No").ToString ();//获得异常编号MessageBox.Show(str_GUID);frmExceptionLogDesc dlg=new frmExceptionLogDesc();dlg.Text = "异常日志查看";dlg.ShowDialog();}}取值2.private void gridControl1_DoubleClick(object sender, EventArgs e){// erInfo model = (sender as DevExpress.XtraGrid.GridControl).DataSource as erInfo;if (this.gridView1.RowCount > 0){int[] selectRow = this.gridView1.GetSelectedRows();erInfo model = gridView1.GetRow(selectRow[0]) as erInfo;// string UserName = this.gridView1.GetRowCellValue(selectRow[0], "UserName").ToString();//获得异常编号UserInfo ui = new UserInfo();erInfoModel = model;ui.Show();}}补充:(6)barManager的具体设置在增加了barManager控件以后,在[Click Here to add MainMenu] [Click Here to Tool Bar]里面选择[Click Here to Tool Bar] 填写需要新增的工具栏按钮。
devexpressgridcontrol部分用法GridControl赋值:this.GridControl1.DataSouce=dt;2、GridContro总合计及分组合计:常规总合计直接RunDesigner-Group Summary ItemsDisplayFormat 设置显示格式如:{0:P}表示显示为百分号模式。
如数据源中为0.5。
表示出来为50%FieldName 设置显示的对应列ShowInGroupColumnFooter 在那一列下面显示SummaryType 合计方式。
选择Custom表示自定义。
CustomSummaryCalculate事件可处理View Code//Footer行自定义列合计1 GridView view = sender as GridView;2 if (e.Item == view.Columns["RateZk"].SummaryItem)3 {4 decimal x =Convert.ToDecimal(view.Columns["RetailFAmount"].Summary Item.SummaryValue);5 decimal y =Convert.ToDecimal(view.Columns["RetailAmount"].SummaryItem.SummaryValue);6view.Columns["RateZk"].SummaryItem.DisplayFormat = "{0:P}";7 if (y != 0)8 e.TotalValue = x / y;9 else10 e.TotalValue = 0;11 }View Code//分组行自定义合计列1 if (e.IsGroupSummary)2 {3 Hashtable ht =view.GetGroupSummaryValues(e.GroupRowHandle);45 foreach (DictionaryEntry entry in ht)6 {7 GridGroupSummaryItem sumItem = entry.Key as GridGroupSummaryItem;8 if (sumItem.FieldName.Equals("RetailFAmount"))9 retailFAmount =Convert.ToDecimal(entry.Value);10 }11 if(e.Item.ToString().Contains(view.Columns["RateZk"].Summary Item.FieldName))12 e.TotalValue = retailFAmount3、GridContro导出Excel操作:View Code1 SaveFileDialog saveFileDialog = new SaveFileDialog();2 saveFileDialog.Title = "导出Excel";3 saveFileDialog.Filter = "Excel文件(*.xls)|*.xls";4 DialogResult dialogResult =saveFileDialog.ShowDialog(this);5 if (dialogResult == DialogResult.OK)6 {7 this.gvbrowse.OptionsPrint.AutoWidth = false; //设置导出的Excel自动调整列宽,列宽和控件的列宽一致8this.gcbrowse.ExportToXls(saveFileDialog.FileName);9//this.gcbrowse.ExportToXlsOld(saveFileDialog.FileName);//这个方法默认会自动调整列宽,但是office10以上版本有的会报错10 DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, rmation);11 this.gvbrowse.OptionsPrint.AutoWidth = true;12 }4、GridControl列要显示百分号:Run Designer-Columns列FormatType="Numeric" FormatString="p"5、gridView1.OptionsView.ShowGroupPanel = false; 不显示分组面板6、gridView1.OptionsBehavior.Editable=false; 数据只读7、设置列时间格式:Formatstring="yyyy-MM-dd HH:ss:mm"; FormatType="Numeric";设置列数字格式:Formatstring="N2";(数据格式:F表浮点,N表整数,数字表示保留几位小数。
1,增加新行用InitNewRow事件,给新行某字段赋值。
后结束编辑。
private void grdView_InitNewRow(object sender,DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e){DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;view.SetRowCellValue(e.RowHandle, view.Columns["EnterID"],this.dS_MEnterStoreView.MEnterStore[0].ID);this.grdControl.EmbeddedNavigator.Buttons.EndEdit.DoClick();this.grdView.UpdateCurrentRow();}//结合使用的是;//这两行代码竟然解决了在GridControl加Checkbox后,选中一行时结束的编辑状态this.gridview.CloseEdit();this.grdView.UpdateCurrentRow();2,如果进行行验证,就在换行时时行,用grdView_FocusedRowChanged事件private void grdView_FocusedRowChanged(object sender,DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e){WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow row = (WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow)this.grdV iew.GetDataRow(e.FocusedRowHandle);if (row != null){if ((this.OperState == Common.Enum.TOperState.UnConfirmNew)|| (this.OperState == Common.Enum.TOperState.UnConfirmEdit)){this.InitComboBoxValue(row, row.IsGoodIDNull()?0:row.GoodID, false);this.InitBatchComboBoxValue(row,row.IsGoodIDNull()?0:row.GoodID, false);}}}3,如果需要改变行的某一列的同时改变其它的列用grdView_CellValueChanged 事件private void grdView_CellValueChanged(object sender,DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e){if (this.grdView.FocusedColumn == e.Column){if (e.Column == this.colAmount){}}}4,如果需在离开行的时候需要验证,则用grdView_BeforeLeaveRow事件.-------------------------------------------------------------------------------------------------------DevExpress XtraGrid的功能实在强大,刚使用的时候看到一大片属性设置,分不清东南西北,参照demo和使用中的一些经验,记录一下使用方法。
Dev控件研究(一)gridcontrol简单使用最近,工作安排,要我研究dev控件。
项目没开始,被要求搞研究。
界面dev的控件表现效果及实用功能都是蛮方便和强大的。
gridcontrol中有5种view 型式,普通的是gridview,然后分别为cardview、BandedView、Advanced BandedView、LayoutView;共5种。
gridview跟WinForm自带的差不多,有一些高级特性,比如说可以把某一列拿出来分组啊,之类的。
我这几天主要研究了这三个:LayoutView、BandedView、AdvancedBandedView。
LayoutView实现的视觉效果可以说很。
炫~(我们做应用行业软件的。
项目组长却要求这么炫的效果。
我觉得他是想不开。
)仔细看了dev的demo源代码,实际上这里只需要在gridcontrol 中的designer中的view组中把OptionView下的viewmode 设置成“Carousel”就达到这种“旋转木马”式的gridcontrol view 特效了。
关键部分还是细节,layoutView1.OptionsCarouselMode.PitchAngle 这个属性决定“旋转木马”的pitch angle 螺距角; 螺旋角; 螺旋升角; 俯仰角; 倾角; 节锥半角【主科技词汇】。
Roll Angle 属性决定着倾侧角度~~其它的属性都好说。
然后就是columns的设置问题了,设置column的长高啊什么的,现在还没完全弄明白~~。
有时候设置了,coumn没变。
反正要想真正达到图片中的那种效果,得很细心的搞一下才行。
将其设置为图片类型的时候,是比较痛苦的事情。
我开始以为在给gridcontrol的datatable 里面设置一列为路径string 就够了~结果试了半天(没办法,源码里面调用的是xml文件!~~图片是Int64类型的,刚开始没仔细看。
),在csdn搜到了。
//显示数据private void showData(List<Employee > list){DataTable dt = new DataTable("OneEmployee");dt.Columns.Add("Caption", System.Type.GetType("System.String"));dt.Columns.Add("Department", System.Type.GetType("System.String"));dt.Columns.Add("PhotoName", System.Type.GetType("System.Byte[]"));for (int i = 0; i < list.Count; i++){DataRow dr = dt.NewRow();dr["Caption"] = list[i].Name;dr["Department"] = list[i].Department;string imagePath = @"D:\C#\photos\" + list[i].PhotoPath;dr["PhotoName"] = getImageByte(imagePath);dt.Rows.Add(dr);}gridControl1.DataSource = dt;}//返回图片的字节流byte[]private byte[] getImageByte(string imagePath){FileStream files = new FileStream(imagePath, FileMode.Open);byte[] imgByte = new byte [files.Length ];files.Read(imgByte, 0, imgByte.Length);files.Close();return imgByte;}来自CSDN博客,转载请标明出处:/alen0707/archive/2009/05/20/4203807.aspx必须转换成2进制数组,属性为pictureedit的column才能认~~~,then,基本上完成。
LayoutView~.net - 第三方控件Devexpress - GRIDCONTROL 和 GRIDVIEW 的简单使用(C/S)∙Tag:∙.Net∙C_∙第三方控件∙Devexpress∙GridViewGRIDCONTROL 和 GRIDVIEW 的简单使用【添加、删除、保存、撤销、修改(是在gridView上面直接修改)】【添加、修改、删除】只是对gridView所绑定的数据源进行的操作的,需要通过【修改】来提交到数据库【撤销】是撤销对数据源的修改,保存后无法撤销gridControl:DevExpress.XtraGrid.GridControl.相当于一个dateGrid的控制器,它包括多种显示样式:GridView,CardView,LayoutView 等等.gridView:DevExpress.XtraGrid.Views.Grid.GridView.是一个常用的表格形式,下面以gridView为例.labelControl1:belControl.标签,类似于普通的LabelSysUserMgt:是一个对象管理接口,省略.SysUserMgtImpl:是对管理接口的实现(增、删、改、差),省略.SysUser:实体类,省略.SysUserMgtImpl --> Select(); 查询所有用户,返回 DataSet 集合SysUserMgtImpl --> Insert(SysUser sysUser); 接受一个新用户,添加SysUserMgtImpl --> Update(SysUser sysUser); 接受一个新用户,修改SysUserMgtImpl --> Delete(int sysUserId); 接受用户的ID,删除用户===================加载数据================================SysUserMgt sysUserMgt = new SysUserMgtImpl();_dsUser = sysUserMgt.Select();// 绑定数据源gridControl1.DataSource = _dsUser.Tables[0">;===================设置gridView的样式======================// 设置奇数行颜色 // 默认也是白色可以省略this.gridView1.Appearance.OddRow.BackColor = Color.White;// 使能 // 和和上面绑定同时使用有效this.gridView1.OptionsView.EnableAppearanceOddRow = true;// 设置偶数行颜色this.gridView1.Appearance.EvenRow.BackColor = Color.WhiteSmoke;// 使能this.gridView1.OptionsView.EnableAppearanceEvenRow = true;// ID 只读 this.gridView1.Columns[0">.ReadOnly = true; 无效this.gridView1.Columns[0">.OptionsColumn.ReadOnly = true;// 可以用下面的方式替换//DevExpress.XtraEditors.Repository.RepositoryItemTextEdit userId = new Dev Express.XtraEditors.Repository.RepositoryItemTextEdit();//userId.ReadOnly = true;//this.gridView1.Columns[0">.ColumnEdit = userId;// 将第三列设置成密码框,让其看不见,但是可以修改DevExpress.XtraEditors.Repository.RepositoryItemTextEdit loginPass = new De vExpress.XtraEditors.Repository.RepositoryItemTextEdit();// 密码的显示样式可以替换,只能是 char 型loginPass.PasswordChar = '*';this.gridView1.Columns[2">.ColumnEdit = loginPass;// 将站点字段替换成一个下拉式的只读(默认)表格,comboBox无效DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit station = ne w DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit();StationMgt stationMgt = new StationMgtImpl();DataSet dsStation = stationMgt.SelectIdAndName();station.DataSource = dsStation.Tables[0">;// 当什么都没选的时候显示的文本station.NullText = "请选择站点";// 显示的字段名 //如果是En文,区分大小写。
如:NAME or name station.DisplayMember = "站点名称";// 给view 的值 -- 字段名 // 区分大小写station.ValueMember = "站点编号";this.gridView1.Columns[8">.ColumnEdit = station;===================添加记录================================ this.gridView1.AddNewRow();===================删除记录================================ this.gridView1.DeleteSelectedRows();===================保存修改================================ belControl1.Focus(); // 见“焦点设置”if (_dsUser.Tables[0">.GetChanges()==null){MessageBox.Show("没有修改");return;}SysUserMgt sysUserMgt = new SysUserMgtImpl();// 遍历所有修改过的行foreach (DataRow row in _dsUser.Tables[0">.GetChanges().Rows){/*========DataRowState 成员名称说明 ========Added 该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用。