DevExpress.XtraGrid.GridControl常用功能(增删改)
- 格式:docx
- 大小:14.77 KB
- 文档页数:2
下面整理一下GridControl 常用的功能, GridControl 包含CardView 、GridVie w 、BandedGridView 、AdBandedGridView 、LayoutView 五个组件,最常用的非GridView 莫属。
DevExpress.XtraGrid.GridControl 和VS 自带的DataGridVi ew 非常类似,但使用上有很多的差异。
1、获取选中行的行号1 int rowIndex = this .gridView1.FocusedRowHandle ;2、获取选中行 的数据1 string colValue = this .gridView1.GetRowCellValue (this .gridView1.FocusedRowHandl e , this .gridView1.Columns [1]).ToString () ; 3、删除选中行数据1 2 3 int focusedRow = this .gridView1.FocusedRowHandle ;dt .Rows .RemoveAt (focusedRow ); this .gridControl1.DataSource = dt ;4、获取总行数1 int rownum = this .gridView1.RowCount ; 5、插入、删除、修改 数据(增删改)123456 7 8 9 10 11 121314//增加行 private void AddRows (stringrow_num ) { dt .Rows .Add (new object [] { row_num,"" }); this .gridControl1.DataSource = dt ; } //删除行 private void SubRows (introwindex ) { dt .Rows .RemoveAt (rowindex ); this .gridC ontrol1.DataSource = dt ; } //修改行 private voidModifyRows (int rowindex,int colindex,stringvalue ) { dt .Rows [rowindex ][colindex ] =value ; this .gridControl1.DataSource = dt ; }15161718 6、清空数据和表格 并添加两个列123 45//方法一:新建并绑定数据源 DataTable dt = new DataTable (); dt .Columns .Add ("ID"); dt .Columns .Add ("DATE"); this .gridControl1.DataSource = dt ; 123 4 56//方法二:循环删除每条数据 for (int index = 0;this .gridView1.RowCount -1;index ++) { dt .Rows .RemoveAt (rowindex ); this .gridControl1.Da taSource = dt ; }对gridView1中的操作基本都可以通过更改绑定的数据源来实现。
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;//渐变颜⾊}}。
devexpress winform用法
DevExpress是一家软件开发工具和组件供应商,他们提供了
一套强大的WinForms控件,帮助开发人员更快、更方便地创
建Windows桌面应用程序。
以下是一些DevExpress WinForms控件的常见用法:
1. GridControl(网格控件):GridControl是一个用于显示和编辑表格数据的功能强大的控件。
你可以使用它来显示数据库的数据,进行快速过滤、排序和分组,还可以对数据做出修改。
2. XtraEditors(编辑器控件):DevExpress提供了一系列编辑
器控件,用于创建各种输入界面。
比如TextEdit(文本输入)、ComboBoxEdit(下拉框选择)、DateEdit(日期选择)等。
你
可以方便地为这些控件设置各种属性和样式。
3. XtraCharts(图表控件):DevExpress的图表控件支持多种
图表类型和布局,你可以使用它创建各种数据统计和可视化报表。
4. XtraReports(报表控件):XtraReports是一个强大的报表生成引擎,你可以使用它创建各种复杂的打印和预览报表。
5. XtraNavBar(导航栏控件):XtraNavBar是一个导航栏控件,可以帮助你创建易于使用的导航界面。
这只是DevExpress WinForms控件中的一小部分,还有很多其
他控件可以帮助你创建更丰富和交互性的应用程序。
在使用DevExpress控件时,你可以使用设计器或代码来配置和定制
控件的外观和行为。
同时,DevExpress还提供了丰富的文档、示例和支持社区,方便开发人员学习和解决问题。
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加⾏号。
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表整数,数字表示保留几位小数。
DevExpress控件使⽤⽅法:第⼀篇gridControl详解GridControl(1)层次设计器有五种视图模式,banded gridview多⾏表头,数据还是⼀⾏⼀组,最靠近数据的表头与数据⼀⼀对应;advanced banded gridview多⾏表头,数据可以多⾏⼀组;cardview ⼀个卡⽚是⼀组数据,其中左侧是标题,右侧是数据;layout view是card view的集合,布局可以⾃定义(2)视图视图的层次结构视图属性:可通过GridControl.Views访问所有视图。
可通过ColumnView.Columns访问当前视图的所有列(3)设计器(层次设计器中点击Run Designer可调出)设计器有四⼤功能:①主要功能的设计;②选择外观;③可以选择多个视图,内嵌编辑器的设置;④打印功能的设置① View:(a)Option:OptionsBehavior可以设置⾏为(是否允许新增⾏/是否允许删除⾏/是否允许编辑/是否允许展开所有分组)OptionsCustomization(是否允许排序/分组/过滤/列的移动/列的⼤⼩的调整)OptionsDetail(设置从表的属性)、OptionsFilter(过滤属性的设置)OptionsView(显⽰或隐藏某些东西,⽐如标题⾏)(b)AppearancePrint : (⾏⾼…)Columns://列的相应的属性FeatureBrowser://设置事件,Grid的绑定、列的绑定(有⽅法提⽰),什么都可以设置Layout:设置布局Group Summary Items添加分组统计② Appearance:Appearances可设置⾏的外观Format Conditions条件样式Style Schemes可设置主题(⽐较⽅便)③ RepositoryView Repository设计视图,与①差不多In-place Editor Repository内嵌编辑器④ Printing(4)gridControl:给该列添加组件(如按钮) 三种⽅法法⼀:打开设计器(Run Designer),选择左侧Repository,点击In-place Editor Repository(内嵌编辑器),点击Add右侧的下拉菜单,选择你想添加的控件,⽐如ComboBoxEdit,再在右侧编辑控件的属性,ComboBox的话就可以设置Data下的Items集合,然后点左侧Main⾥的Columns,点你想在上头添加控件的列,找右侧Data下的ColumnEdit,点最右边的下拉菜单,点Existing左侧的加号,就能找到你刚才的控件,添加。
DevExpress中GridControl的属性设置1. 隐藏最上面的GroupPanelgridView1.OptionsView.ShowGroupPanel=false;2.得到当前选定记录某字段的值sValue=T able.Rows[gridVie w1.FocusedRowHandle][FieldName].T oString();3.数据只读gridVie w1.OptionsBehavior.Editable=false;4.不显示MasterDetailViewgridVie w1.OptionsDetail.EnableMasterViewMode=false;5.修改最上面的GroupPanel内容gridVie w1.GroupPanelT ext="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);}}。
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和使用中的一些经验,记录一下使用方法。
DevExpress.XtraGrid.GridControl绑定List笔记背景最近公司计划按业务domain拆分系统,原有系统客户端用到DevExpress组件,报表展示都是通过GridControl绑定DataTable实现。
考虑到和服务端交互数据的性能问题,在项目升级的同时,想把DataTable替换掉。
GridControl绑定IList比较简单,但是在调试主从表效果时,一直没能达到预期效果,子列表的列名一直显示相应类的字段名称。
这个问题令人大伤脑筋,调试过程着实花了一番功夫,但是问题的解决方法却让人大跌眼镜。
考虑到关于这个问题在网上比较难找,所以这里做了个分享,希望对碰到同样问题的朋友有所帮助。
运行效果定义实体类//////学生信息///public class StudentEntity{private int stuId;//////学号///public int StuId{get { return stuId; }set { stuId = value; }}private string stuName; //////姓名///public string StuName {get { return stuName; } set { stuName = value; } }private List courseList; //////所选课程///public List CourseList {get { return courseList; } set { courseList = value; } }}//////学生选课信息///public class StuCourseEntity {private int stuId;//////学生编号///public int StuId{get { return stuId; }set { stuId = value; }}private int id;//////课程编号///public int Id{get { return id; }set { id = value; }}private string name;//////课程名称///public string Name{get { return name; }set { name = value; }}private decimal score;//////成绩///public decimal Score{get { return score; }set { score = value; }}}构建学员实例List studentList = new List();studentList.Add(new StudentEntity() { StuId = 101, StuName = "101",CourseList = new List() {new CourseEntity(){StuId = 101, Id = 201,Name = "语文", Score = 78},new CourseEntity(){StuId = 101, Id = 202,Name = "数学", Score = 95},new CourseEntity(){StuId = 101, Id = 203,Name = "外语", Score = 80} }});studentList.Add(new StudentEntity(){StuId = 102,StuName = "102",CourseList = new List() {new CourseEntity(){StuId = 102, Id = 201,Name = "语文", Score = 80},new CourseEntity(){StuId = 102, Id = 202,Name = "数学", Score = 95},new CourseEntity(){StuId = 102, Id = 203,Name = "外语", Score = 80}}});studentList.Add(new StudentEntity(){StuId = 103,StuName = "103",CourseList = new List() {new CourseEntity(){StuId = 103, Id = 201,Name = "语文", Score = 90},new CourseEntity(){StuId = 103, Id = 202,Name = "数学", Score = 95},new CourseEntity(){StuId = 103, Id = 203,Name = "外语", Score = 80}}});绑定List到GridControlgcMain.DataSource = studentList;GridControl设置注:这里的LevelName的设置是关键,一定要和Student类的CourseList一致(用DataSet做数据源是主从表关系是通过DataRelation指定的,而IList作为数据源时,这里的关系是通过LevelName对应的,在调试的过程中很容易忽略这个属性的设置)。
下面整理一下GridControl 常用的功能, GridControl 包含CardView 、GridVie w 、BandedGridView 、AdBandedGridView 、LayoutView 五个组件,最常用的非GridView 莫属。
DevExpress.XtraGrid.GridControl 和VS 自带的DataGridVi ew 非常类似,但使用上有很多的差异。
1、获取选中行的行号
1 int rowIndex = this .gridView1.FocusedRowHandle ;
2、获取选中行 的数据
1 string colValue = this .gridView1.GetRowCellValue (this .gridView1.FocusedRowHandl e , this .gridView1.Columns [1]).ToString () ; 3、删除选中行数据
1 2 3 int focusedRow = this .gridView1.FocusedRowHandle ;
dt .Rows .RemoveAt (focusedRow ); this .gridControl1.DataSource = dt ;
4、获取总行数
1 int rownum = this .gridView1.RowCount ; 5、插入、删除、修改 数据(增删改)
1
2
3
4
5
6 7 8 9 10 11 12
1
3
1
4
//增加行 private void AddRows (string
row_num ) { dt .Rows .Add (new object [] { row_num,
"" }); this .gridControl1.DataSource = dt ; } //删除
行 private void SubRows (int
rowindex ) { dt .Rows .RemoveAt (rowindex ); this .gridC ontrol1.DataSource = dt ; } //修改行 private void
ModifyRows (int rowindex,int colindex,string
value ) { dt .Rows [rowindex ][colindex ] =
value ; this .gridControl1.DataSource = dt ; }
1
5
1
6
1
7
1
8 6、清空数据和表格 并添加两个列
1
2
3 4
5
//方法一:新建并绑定数据源 DataTable dt = new DataTable (); dt .Columns .Add ("ID"); dt .Columns .Add ("DATE"); this .gridControl1.DataSource = dt ; 1
2
3 4 5
6
//方法二:循环删除每条数据 for (int index = 0;
this .gridView1.RowCount -1;
index ++) { dt .Rows .RemoveAt (rowindex ); this .gridControl1.Da taSource = dt ; }
对gridView1中的操作基本都可以通过更改绑定的数据源来实现。
增删改是再熟悉不过了,关于gridControl 的更多功能,。