GridControl小结

合集下载

GridControl网格控件常见问题解答

GridControl网格控件常见问题解答

GridControl 网格控件常见问题1、GridControl 的数据和数据源打印之后不同步描述:frmTest 、gridcontrol1、gridview1、dtView 、dtview 为 gridcontrol1的数据源。

数据源是根据dtview 按照一定规则重新生成的 datatable ,xtrareport.showpreviewdialog()打印之后frmtest 的数据是没有清空的,gridview 可以继 续编辑和打印报表。

问题就是:打印一次之后gridview 可以再次编辑,但是绑定的数据源dtview 就一直和打印之前是一样的效果,也就是 gridcontrol 的数据和数据源不同步了。

解答:GridControl 是不支持自动保存数据到数据库的,所以请使用GridView.RowUpdated 事件,并通过代码将更改的数据保存到数据源。

2、DXperience ASPxGridView 如何开启lightweight 模式描述:ASPxGridView 样式主题中page render mode 选项里面有 lightweight 模式,要如何开启此模式?解答:目前ASPxGridView 控件本身不支持Lightweight 模式,目前支持的控件包 括:ASPxMenu ASPxNavBar ,ASPxPager ,ASPxPageControl ,ASPxPopupControl ,ASPxPopupMenu ,ASPxTabControl 。

3、DXperience PivotGridField 自定义格式化方法描述:如果PivotGridField 中的值为2011,2012等数字,有没有自定义格式化的方法将2011,2012等格式化为:2011(万吨),2012(万吨)解答:您可以通过设置PivotGridField.CellFormat 来实现该功能,参考代码如下:1 <dxpg:PivotGridField Name="fieldQuantity" FieldName="Quantity" Area="DataArea" CellFormat="{0}(万吨)" />4、Dxperience PivotGridControl 设置的数据类型不为空描述:我赋值给PivotGridControl.DataSource 的dataset 中某列的数据类型是可以为空的decimal ,其中有些行是null ,即使使用EmptyCellText=""显示仍然是0.00,而我要的结果是空。

GridControl详解(附)表格属性一览

GridControl详解(附)表格属性一览

允许在控件失去焦点 时,外观设置应用到选 择的行上 设置焦点的风格应用到 获得焦点的单元格,还 是获得焦点的那一行的 所有单元格 允许多选行 多选模式(多选行或多选 单元格)(GridView和 BandedGridView专有属 性) 当处理多选模式时,能 否使用行指示面板来进 行行的选择 视图选项 允许相同值的相邻单元 格合并 (BandedGridView专有 根据预览的内容自动计 算出文本行的数量 自动调整列宽,使所有 列的宽度和视图的宽度 允许偶数行应用界面设 置 (GridViewPrintAppeara nces) 允许奇数行应用界面设 置 (GridViewPrintAppeara nces) 分组行的显示模式 列头上的过滤按钮的显 示模式 设置新项目行的位置 每一行自动根据单元格 的内容调整高度 (GridView专用属性) 显示自动过滤行 显示带的面板 (BandedGridView和 AdvBandedGridView专 有属性) 视图的分组面板是否担 当一个新加入的分组面 板 显示列头 在主行上显示"主—明细" 的扩展按钮 显示过滤面板 显示视图的页脚 显示分组列(GridView 专用属性) 显示分组面板 显示水平网格线 显示行指示器面板 显示预览部分 显示预览线 显示垂直网格线 常规属性 常规属性 常规属性
EnableAppearanceHide Selection
InvertSelection MuiltiSelect MuiltiSelectMode
UseIndicatorForSelectio n OptionsView AllowCellMerge
CacheValuesOnRowUp dating
Editable EditorShowMode FocusLeaveOnTab

DevExpress使用方法GridControl总结

DevExpress使用方法GridControl总结

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="柳⽣飘絮";6.数据绑定:FieldName --数据库的字段名称7.读写拷贝权限设置ColumnView.EditableThis property returns a value of the 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设置OptionsColumn.AllowEdit才有意义OptionsColumn.ReadOnlyGets or sets whether end-users are prevented from editing the column's cell values.可读可写If the ReadOnly property is set to true, the cell values of columns cannot be modified by end-users. In this case cell editors can be invoked but end users can only select and copy an editor's content. This option is not in effect if the column's or the view's option is disabled.Cell values can still be modified in code using the method regardless of the ReadOnly property's setting.只读不可拷贝:ColumnViewOptionsBehavior.Editable = False只读可拷贝:ColumnViewOptionsBehavior.Editable = TrueOptionsColumn.AllowEdit = TrueOptionsColumn.ReadOnly = True可编辑:ColumnViewOptionsBehavior.Editable = TrueOptionsColumn.AllowEdit = TrueOptionsColumn.ReadOnly = False=============================================================⼀、如何解决单击记录整⾏选中的问题View->OptionsBehavior->EditorShowMode 设置为:Click⼆、如何新增⼀条记录(1)、gridView.AddNewRow()(2)、实现gridView_InitNewRow事件三、如何解决GridControl记录能获取⽽没有显⽰出来的问题gridView.populateColumns();四、如何让⾏只能选择⽽不能编辑(或编辑某⼀单元格)(1)、View->OptionsBehavior->EditorShowMode 设置为:Click(2)、View->OptionsBehavior->Editable 设置为:false五、如何禁⽤GridControl中单击列弹出右键菜单设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false六、如何隐藏GridControl的GroupPanel表头设置Run Design->OptionsView->ShowGroupPanel 设置为:false七、如何禁⽤GridControl中列头的过滤器过滤器如下图所⽰:设置 Run Design->OptionsCustomization->AllowFilter 设置为:false⼋、如何在查询得到0条记录时显⽰⾃定义的字符提⽰/显⽰如图所⽰:⽅法如下://When no Records Are Being Displayed private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e) { //⽅法⼀(此⽅法为GridView设置了数据源绑定时,可⽤) ColumnView columnView = sender as ColumnView; BindingSource bindingSource = this.gridView1.DataSource as BindingSource;if(bindingSource.Count == 0) { string str = "没有查询到你所想要的数据!"; Font f = new Font("宋体", 10, FontStyle.Bold); Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5); e.Graphics.DrawString(str, f, Brushes.Black, r); } //⽅法⼆(此⽅法为GridView没有设置数据源绑定时,使⽤,⼀般使⽤此种⽅法) if (this._flag) { if (this.gridView1.RowCount == 0) { string str = "没有查询到你所想要的数据!"; Font f = new Font("宋体", 10, FontStyle.Bold); Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5); e.Graphics.DrawString(str, f, Brushes.Black, r); } } }九、如何显⽰⽔平滚动条?设置this.gridView.OptionsView.ColumnAutoWidth = false;⼗、如何定位到第⼀条数据/记录?设置 this.gridView.MoveFirst()⼗⼀、如何定位到下⼀条数据/记录?设置 this.gridView.MoveNext()⼗⼆、如何定位到最后⼀条数据/记录?设置 this.gridView.MoveLast()⼗三、设置成⼀次选择⼀⾏,并且不能被编辑this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus; this.gridView1.OptionsBehavior.Editable = false;this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;⼗四、如何显⽰⾏号?this.gridView1.IndicatorWidth = 40; //显⽰⾏的序号 private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) { if(.IsRowIndicator && e.RowHandle>=0) { .DisplayText = (e.RowHandle + 1).ToString(); } }⼗五、如何让各列头禁⽌移动?设置gridView1.OptionsCustomization.AllowColumnMoving = false;⼗六、如何让各列头禁⽌排序?设置gridView1.OptionsCustomization.AllowSort = false;⼗七、如何禁⽌各列头改变列宽?设置gridView1.OptionsCustomization.AllowColumnResizing = false;=======================================================================================devexpress表格控件gridcontrol设置隔⾏变⾊、焦点⾏颜⾊、设置(改变)显⽰值、固定列不移动(附源码)介绍⼀些常⽤的gridcontrol设置。

MFCGridCtrl控件_使用心得

MFCGridCtrl控件_使用心得

目录1引言 (1)1.1目的 (1)1.2参考资料 (1)2GRID控件介绍 (1)2.1功能介绍 (1)2.2框架介绍 (2)2.3主要类介绍 (4)2.3.1CGridCtrl类 (4)2.3.2CGridCellCheck类 (5)2.3.3CGridCellCombo类 (7)2.4控件类CG RID C TRL常用函数说明 (10)2.4.1行和列的设置 (10)2.4.2单元格信息设置 (13)2.4.3控件操作 (16)2.4.4外观和特征设置 (20)2.4.5颜色设置 (24)2.4.6控件消息介绍 (26)3实例制做 (27)3.1实例图片 (27)3.2实例制做过程介绍 (28)3.2.1新建项目 (28)3.2.2初使化GridCtrl控件 (28)3.2.3设置固定行和列 (30)3.2.4向单元格插入图片 (31)3.2.5设置CheckBox列 (32)3.2.6设置ComboBox列 (33)3.2.7设置行背景颜色和列背景颜色 (34)3.2.8添加消息处理 (35)4实例以外的思考 (36)1 引言1.1 目的本文记录了作者在学习了解并使用GridCtrl的过程中的心得体会,希望能够对今后学习使用GridCtrl控件的其他同事有所帮助,使其更快上手。

1.2 参考资料1)CGridCtrl学习指南网址:/blog/static/21769242200822911559438/ 2)CGridCtrl使用详解网址:/incwar/archive/2009/01/17/3807283.aspx3)CGridCtrl源代码一份。

需要的同事,可以OA上发邮件给我。

4)作者亲手制做的对于CGridCtrl的使用实例:GridCtrlTest。

需要的同事,可以OA上发邮件给我。

2 Grid控件介绍2.1 功能介绍GridControl控件是一款非常优秀的网格控件,在VC平台上的用途非常广泛也非常灵活。

GridControl学习小结

GridControl学习小结

关于XtraGrid的使用(GridControl小结)DevExpress XtraGrid的使用(AspxGridControl小结)收藏自定义焦点行的方法:gridView_bcode.FocusedRowHandle = focuseRowInt; //通过设置GridView 的FocusedRowHandle属性view plaincopy to clipboardprint?//获取焦点行任意单元格的数据ColumnView cv = (ColumnView)gridControl_Gongzi.FocusedView;//重新获取此ID 否则无法从表头连删获取不到idint focusedhandle = cv.FocusedRowHandle;object rowIdObj = gridView1.GetRowCellValue(focusedhandle, "id");if (DBNull.Value != rowIdObj){FocusedRow_id = Convert.ToInt32(rowIdObj);}//获取焦点行任意单元格的数据ColumnView cv = (ColumnView)gridControl_Gongzi.FocusedView;//重新获取此ID 否则无法从表头连删获取不到idint focusedhandle = cv.FocusedRowHandle;object rowIdObj = gridView1.GetRowCellValue(focusedhandle, "id");if (DBNull.Value != rowIdObj){FocusedRow_id = Convert.ToInt32(rowIdObj);}view plaincopy to clipboardprint?//当数据发生变化时执行private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e) {int intRowHandle = e.RowHandle;FocusedRow_bumen = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "bumen"));FocusedRow_xingming = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "xingming"));//FocusedRow_jibengongzi = Convert.ToDecimal(gridView1.GetRowCellValue(intRowHandle, "jibengongzi"));object rowJibengongziObj = gridView1.GetRowCellValue(intRowHandle, "jibengongzi");if (DBNull.Value != rowJibengongziObj){FocusedRow_jibengongzi = Convert.ToDecimal(rowJibengongziObj);}}//当数据发生变化时执行private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e){int intRowHandle = e.RowHandle;FocusedRow_bumen = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "bumen"));FocusedRow_xingming = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "xingming"));//FocusedRow_jibengongzi = Convert.ToDecimal(gridView1.GetRowCellValue(intRowHandle, "jibengongzi"));object rowJibengongziObj = gridView1.GetRowCellValue(intRowHandle, "jibengongzi");if (DBNull.Value != rowJibengongziObj){FocusedRow_jibengongzi = Convert.ToDecimal(rowJibengongziObj);}} view plaincopy to clipboardprint?//设置焦点行的焦点单元格的位置ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;view.FocusedColumn = view.Columns["bumen"];//设置焦点行的焦点单元格的位置ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;view.FocusedColumn = view.Columns["bumen"]; view plaincopy to clipboardprint?//当焦点行发生改变时执行获取选中焦点行idprivate void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e){int intRowHandle = e.FocusedRowHandle;object rowIdObj = gridView1.GetRowCellValue(intRowHandle, "id");if (DBNull.Value != rowIdObj)//做个判断否则获取不到id后报错{FocusedRow_id = Convert.ToInt32(rowIdObj);}}//当焦点行发生改变时执行获取选中焦点行idprivate void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e){int intRowHandle = e.FocusedRowHandle;object rowIdObj = gridView1.GetRowCellValue(intRowHandle, "id");if (DBNull.Value != rowIdObj)//做个判断否则获取不到id后报错{FocusedRow_id = Convert.ToInt32(rowIdObj);}}view plaincopy to clipboardprint?//焦点行的FocusedHandle为:FocuseRow_Handle = -999998;//获取焦点行的handleColumnView newview = (ColumnView)gridControl_Gongzi.FocusedView;FocuseRow_Handle = newview.FocusedRowHandle;//回车添加新行private void gridView1_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == 13){ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;if(view.IsLastRow){if (FocuseRow_Handle == 0){gridView1.AddNewRow();ColumnView newview = (ColumnView)gridControl_Gongzi.FocusedView;newview.FocusedColumn = newview.Columns["bumen"];//定位焦点网格的位置FocuseRow_Handle = newview.FocusedRowHandle;//获取新焦点行的FocuseRowHandle 并初始化全局变量FocuseRow_Handle供保存操作时判断是update 还是insertGridcontrol的作用笔记:girdView在第一列显示行号//调整第一列的宽度this.gridView1.IndicatorWidth = 40;//添加监听事件this.gridView1.CustomDrawRowIndicator += newDevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(thi s.gridView1_CustomDrawRowIndicator);//在非类里这段代码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);}}private void mnuLoad_Click(object sender, System.EventArgs e){// TODO: Load CustomersDatabase db = null;db = DatabaseFactory.CreateDatabase();DataSet ds = db.ExecuteDataSet(CommandType.Text,"SELECT ID,Name,Age From UserInfo");gridControl1.DataSource = ds.Tables[0];//设置成一次选择一行,并且不能被编辑this.gridView1.FocusRectStyle =DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;this.gridView1.OptionsBehavior.Editable = false;this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;//设置列的标题gridView1.Columns[0].Caption = "编号";gridView1.Columns[1].Caption = "名称";gridView1.Columns[2].Caption = "年龄";//设置列的名称,便于进行分组和Foot的统计等信息显示gridView1.Columns[0].Name = "ID";gridView1.Columns[1].Name = "Name";gridView1.Columns[2].Name = "Age";//增加一个Group列进行分组this.gridView1.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {newDevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryIte mType.Count, "ID", null, "(Count={0})")});//增加一个Group列进行分组this.gridView1.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {newDevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryIte mType.Max , "Age", null, "(Max={0})")});//设置并制作Foot下面的统计信息this.gridView1.GroupFooterShowMode =DevExpress.XtraGrid.Views.Grid.GroupFooterShowMode.VisibleAlways;this.gridView1.OptionsView.ShowFooter = true;gridView1.Columns[2].SummaryItem.DisplayFormat = "(Age={0})";gridView1.Columns[2].SummaryItem.FieldName = "Age";gridView1.Columns[2].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;}//设置成cardview格式private void menuItem2_Click(object sender, EventArgs e){gridControl1.MainView = this.cardView1;}//设置成GridView格式private void menuItem4_Click(object sender, EventArgs e){gridControl1.MainView = this.gridView1 ;}自己模仿着写吧,相信大家很快都会成为高手的。

GridControl详解(图文并茂)

GridControl详解(图文并茂)

GridControl详解(一)原汁原味的表格展示Dev控件中的表格控件GridControl控件非常强大。

不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。

使用过程中,多半借助Demo和英文帮助文档。

网上具体的使用方法也多半零碎。

偶遇一个简单而且详细的使用文档。

好记性不如烂笔头!转载过来,整理整理发出来做个记录,总共有十个小节。

做的非常精细,非常感谢原作者。

插件所在位置使用时拖拽过来,如下所示即使拖拽过来原封不动的样子:在程序中写入构建一个表格的代码:private DataTable InitDt(){DataTable dt = new DataTable("个人简历");dt.Columns.Add("id",typeof(int));dt.Columns.Add("name", typeof(string));dt.Columns.Add("sex", typeof(int));dt.Columns.Add("address", typeof(string));dt.Columns.Add("aihao", typeof(string));dt.Columns.Add("photo", typeof(string));dt.Rows.Add(new object[] { 1, "张三", 1, "东大街6号", "看书", "" });dt.Rows.Add(new object[] { 1, "王五", 0, "西大街2号", "上网,游戏", "" });dt.Rows.Add(new object[] { 1, "李四", 1, "南大街3号", "上网,逛街", "" });dt.Rows.Add(new object[] { 1, "钱八", 0, "北大街5号", "上网,逛街,看书,游戏", "" }); dt.Rows.Add(new object[] { 1, "赵九", 1, "中大街1号", "看书,逛街,游戏", "" }); return dt;}书写gridControl1绑定数据方法:private void BindDataSource(DataTable dt){//绑定DataTablegridControl1.DataSource = dt;//绑定DataSet//gridControl1.DataSource = ds;//gridControl1.DataMember = "表名";}程序调用:BindDataSource(InitDt());呈现结果如下:GridControl详解(二)表格的列名配置点击Run Designer控件上的按钮,弹出视图设计窗口:列配置:我们配置完列名后,会发现设计视图发生了变化:运行结果:GridControl详解(三)列数据的格式设置为了测试方便,我们加入新的3列,格式分别是数据,时间,字符串。

GridControl

GridControl

GridControl在DX.10.1: Data工具箱的选项卡中直接把GridControl控件拖到窗体中,1.在属性面板中设置Dock属性2.在GridControl控件面板中点击3.在出现的窗体中,点击左边的进行列名的编辑。

点击上方的可添加一列,插入一列,移除一列。

点击后在右边的属性面板中找到Caption设置显示的列标题和FieldName设置该列绑定数据的字段名,Visible设置列是否隐藏。

这是完成后得到的效果如图:如果在想列名上方再概括出标题,效果如下图:具体操作如下:点击如下图所示的BandedGridView接着点击出现设置面板,点击面板左边的即下方的按钮(Bands按钮只有点击了BandedGridView才会显示)选中gridBand1,在右边的属性面板中找到Caption,设置改标题的名称。

点击按钮添加标题栏并设置标题名设置完成后的效果如图但这并不是我们想要的效果。

直接拖动列标题直到出现上下的两个箭头放开便可。

设置顶部的标题居中显示:点击按钮,在右边找到AppearanceHeader属性,展开找到TextOptions下方的HAlignment选择Center便可。

最终效果图如下:绑定数据:双击窗体(将数据集赋给控件的DataSource)private void XtraForm5_Load(object sender, EventArgs e){string sqlstr = "select TableKey,功能名称,功能描述,图片地址,功能链接地址 from 系统功能";//数据库操作语句DataTable dt = ClassLibrary.DataBase.SqlServer.GetDataSet(sqlstr).Tables[0];//从数据库的操作中返回一Table的数据集this.gridControl1.DataSource = dt;}效果如图:获取数据:在窗体添加一个按钮,双击(通过bandedGridView或者GridView的GetFocusedRowCellValue 获取单个单元格的值)private void simpleButton1_Click(object sender, EventArgs e){string st = this.bandedGridView1.GetFocusedRowCellValue("TableKey").ToString();//获取隐藏值,在添加列时将数ID列(数据的唯一标示)隐藏st += this.bandedGridView1.GetFocusedRowCellValue("功能名称").ToString();//获取选中列的功能名称数据XtraMessageBox.Show(st, "GridControl", MessageBoxButtons.OK);}效果如图:(可以看出我选择的是第3条数据)GridContro左边显示行号:在GridContro中选中你要显示行号的gridView,在属性中设置显示位置的宽度(IndicatorWidth)在事件中选着CustomDrawRowIndicator双击,private void bandedGridView1_CustomDrawRowIndicator(object sender,DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e){if (.IsRowIndicator && e.RowHandle >= 0){.DisplayText = (int.Parse(e.RowHandle.ToString()) + 1).ToString();}}效果如果:。

gridControl的基本详细用法

gridControl的基本详细用法

Developer Express(以下简称dev) 这个第三方控件是VS2005自带的datagridview控件的重写版本.对于一些grid外观,模板列的设置有非常简单的方法.而且控制起来基本和datagridview 一样.所以还是比较方便的.把dev控件拖到窗体以后,会发现多了两个控件gridcontrol1,gridview1,下面针对这期间使用dev的一些总结写在下面(主要是连接数据库,绑定字段和模板列的设置):1. 设置数据源:string sql = "select fid,fname from dual";DataTabledt = 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/DevExpressXtraEditorsControlsSearchMo deEnumtopic.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数据行,数据列DataTabledt = new DataT able();dt.Columns.Add("Col1");DataRowdr = dt.NewRow();dr[0] = "123";dt.Rows.Add(dr);*以上这些都可以在Designer中进行设置,而不用去敲代码对于第三方控件的整体修改和保存,具体说明如下:1. 删除: (修改了dgvdel里的datagridviewdel方法)public static void datagridviewdel_Dev(DevExpress.XtraGrid.Views.Grid.GridViewMydgv){if (MessageBox.Show("你确定要删除选中的记录吗?", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes){intiSelectRowCount = 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就可以了.。

GridControl控件小结

GridControl控件小结

由于近期要使用gridcontrol控件,整理出来,以便以后参考: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一样多的行,可是行里面却没有内容的.7.多选GridControl->GridView->属性->OptinosSelecttion->MultiSelect8.不显示子表信息当我们对DataTable建立父子关系后,将父表绑定在Grid上,会造成关系列上有加号显示,并且可以展开.如果你觉得展开的信息对你没有意义的话,是可以关掉的.这是需要修改属性属性Gridview->Option View->ShowDetailButtons=false/515214304/blog/item/dbf702c0368b7e05bf09e654.htmlbandedGridView1.Columns[1].Width =bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[1]) + 5;bandedGridView1.Columns[2].Width =bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[2]) + 5;bandedGridView1.Columns[3].Width =bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[3]) + 5;bandedGridView1.Columns[0].Width = bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[0]) + 5;。

dev的gridcontrol的用法 -回复

dev的gridcontrol的用法 -回复

dev的gridcontrol的用法-回复"dev的gridcontrol的用法"是指开发中使用的GridControl控件的用法。

GridControl是DevExpress开发框架中的一个重要控件,用于展示和编辑表格数据。

本文将逐步介绍GridControl的使用方法,包括创建GridControl、数据绑定、列定义和数据操作等方面。

一、创建GridControl首先,我们需要在开发环境中导入DevExpress的控件库。

在项目中直接引用DevExpress.XtraGrid的程序集即可。

然后,我们可以在代码中使用以下语句来创建一个GridControl控件:GridControl gridControl = new GridControl();二、数据绑定接下来,我们需要将数据绑定到GridControl上。

GridControl支持多种数据源,包括DataTable、List、数组等。

下面是使用DataTable作为数据源的示例代码:DataTable dataTable = new DataTable();填充dataTable的数据...gridControl.DataSource = dataTable;在数据绑定之后,GridControl会自动根据数据源的结构创建对应的列。

三、列定义GridControl可以根据数据源自动创建列,但是我们也可以手动定义列的特性,例如显示名称、数据类型、编辑控件等。

下面是一个手动定义列的示例代码:GridColumn column = new GridColumn();column.FieldName = "Name";column.Caption = "姓名";column.Visible = true;column.VisibleIndex = 0;gridControl.Columns.Add(column);通过设置GridColumn的属性,我们可以灵活地控制列的显示和行为。

gridcontrol用法

gridcontrol用法

gridcontrol用法使用GridControl进行数据展示和编辑的方法GridControl是一个强大的用于数据展示和编辑的控件,它可以让用户以表格形式直观地查看和修改数据。

下面将介绍如何使用GridControl来展示和编辑数据。

1. 导入GridControl库在开始之前,首先需要确保已经正确导入了GridControl库。

可以通过在项目中添加相应的依赖库或者通过引入GridControl的命名空间来实现。

2. 创建GridControl对象在代码中创建一个GridControl对象,这个对象将用于展示和编辑数据。

```GridControl grid = new GridControl();```3. 创建数据源为了展示数据,需要提供一个数据源。

可以使用各种各样的数据源,比如DataTable、List等。

下面是一个使用DataTable作为数据源的例子:```DataTable dt = new DataTable();dt.Columns.Add("ID", typeof(int));dt.Columns.Add("Name", typeof(string));dt.Rows.Add(1, "John");dt.Rows.Add(2, "Mike");dt.Rows.Add(3, "Emily");grid.DataSource = dt;```4. 添加GridViewGridControl本身不具备数据展示和编辑的功能,需要添加一个GridView来完成。

一个GridControl可以包含多个GridView,每个GridView都对应一种数据展示方式。

```GridView gridView = new GridView();gridView.Columns.AddField("ID");gridView.Columns.AddField("Name");gridView.OptionsView.ShowGroupPanel = false;gridView.GridControl = grid;```这里创建了一个包含两列的GridView,并禁用了分组面板。

oem10ggridcontrol应用的总结

oem10ggridcontrol应用的总结

Orale10g OEM Grid Control是Oracle公司提供的一种企业级数据库(数据库节点数在几十台以上的规模)部署,管理和监控的解决方案,较之10g之前的oem有了本质的区别,它基本上重写了所有的代码,变成了一种基于web的架构,使用户无需再在客户机上安装笨重的java 控制台了。

最近由于笔者负责维护的数据库数据增长到接近500台,因此在管理上采用了企业级的Oracle10g oem grid control来进行日常的管理和维护。

在使用过程中发现它的功能比想象中强大的多,管理的集成性作的也非常好,以下是笔者在实际使用中积累的文档和一些心得体会。

一 oem10g grid control 应用篇:部署1:相关软件的获得如果作为学习用途,Oem10g grid control 可以从oracle官方上直接免费下载。

1)下载oem10g grid control软件,当前版本是10.2.0.1.02)下载agent软件(对于同一个平台的agent软件已经包含在oem里了,对于不适一种平台的os,需要安装适合该平台的agent .2:创建oracle的环境这个可以参考网上的Oracle安装的文档,基本上就是创建一个Oracle用户,一个dba组,配置一下oracle用户的环境变量。

bash_profile),修改一下核参数(主要是起用大存等,也可以随便在网上找到,这些不做为讨论的容)。

3:安装解开下载的文件包,启用图形界面,进入安装界面,其中需要注意的是它会提示你oem的资料库是创建在一个现有的数据库中还是新建个数据库,这个按照你的情况来选择,如果使用现在的数据库,它就会提示你连接到现在的数据库中,然后创建一大堆东西-_-|.我们采用的是创建一个新的数据库,以便于管理,然后一路Next,最后创建成功。

这里没有太大的问题,如果你对这些不熟悉,建议你先练习一下在linux下安装数据库,基本上是一样的,所以不做太多讨论。

2016新编Dev控件研究(一)gridcontrol简单使用

2016新编Dev控件研究(一)gridcontrol简单使用

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类型的,刚开始没仔细看。

gridcontrol click事件用法

gridcontrol click事件用法

一、简介在软件开发中,GridControl 是一种常见的控件,用于在界面上显示由行和列组成的表格数据。

在 GridControl 中,click 事件是一种常用的事件类型,用于响应用户在表格中点击的操作。

二、点击事件的作用1. 响应用户点击操作当用户在 GridControl 中点击某一行或者某一列时,click 事件会被触发,开发人员可以通过捕获该事件来进行相应的处理,例如根据用户的点击操作展开详细信息、修改数据或者执行其他相关操作。

2. 提高用户交互性通过使用 click 事件,可以使用户与表格进行更直观、更方便的交互。

用户可以通过点击来选择感兴趣的数据,进而进行后续的操作,提高了用户的体验和操作效率。

三、 click 事件的使用方法1. 绑定事件处理器在使用 GridControl 控件时,首先需要在代码中绑定 click 事件的处理器。

一般可以通过以下方式来实现:gridControl1.Click += newEventHandler(gridControl1_Click);其中 gridControl1 是指实际使用的 GridControl 控件,gridControl1_Click 则是对应的事件处理函数。

2. 编写事件处理函数在上一步中,我们已经进行了事件处理器的绑定,接下来就需要在代码中编写对应的事件处理函数 gridControl1_Click。

在该函数中,可以实现需要的业务逻辑,例如根据用户点击的位置进行数据处理、展示详细信息等。

3. 使用事件参数在事件处理函数中,可以通过事件参数e 来获取用户点击的位置信息。

通过 e 参数,我们可以获取到用户点击的行、列等具体的位置信息,从而实现对应的操作。

四、实例下面通过一个简单的实例来演示如何使用 click 事件来实现具体的交互功能。

假设我们有一个 GridControl 控件用于显示学生的成绩信息,我们希望实现当用户点击某一行时,可以在界面上弹出该学生的详细成绩信息。

Devpress-XtraGrid-GridControl笔记

Devpress-XtraGrid-GridControl笔记

3月30日[转]Devpress.XtraGrid.GridControl笔记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();}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 和使用中的一些经验,记录一下使用方法。

GridControl网格控件常见问题解答

GridControl网格控件常见问题解答

GridControl网格控件常见问题解答GridControl 网格控件常见问题1、GridControl 的数据和数据源打印之后不同步描述:frmTest 、gridcontrol1、gridview1、dtView 、dtview 为gridcontrol1的数据源。

数据源是根据dtview 按照一定规则重新生成的 datatable ,xtrareport.showpreviewdialog()打印之后frmtest 的数据是没有清空的,gridview 可以继续编辑和打印报表。

问题就是:打印一次之后gridview 可以再次编辑,但是绑定的数据源dtview 就一直和打印之前是一样的效果,也就是 gridcontrol 的数据和数据源不同步了。

解答:GridControl 是不支持自动保存数据到数据库的,所以请使用GridView.RowUpdated 事件,并通过代码将更改的数据保存到数据源。

2、DXperience ASPxGridView 如何开启lightweight 模式描述:ASPxGridView 样式主题中page render mode 选项里面有 lightweight 模式,要如何开启此模式?解答:目前ASPxGridView 控件本身不支持Lightweight 模式,目前支持的控件包括:ASPxMenu ASPxNavBar ,ASPxPager ,ASPxPageControl ,ASPxPopupControl ,ASPxPopupMenu ,ASPxTabControl 。

3、DXperience PivotGridField 自定义格式化方法描述:如果PivotGridField 中的值为2011,2012等数字,有没有自定义格式化的方法将2011,2012等格式化为:2011(万吨),2012(万吨)解答:您可以通过设置PivotGridField.CellFormat 来实现该功能,参考代码如下:14、Dxperience PivotGridControl 设置的数据类型不为空描述:我赋值给PivotGridControl.DataSource 的dataset 中某列的数据类型是可以为空的decimal ,其中有些行是null ,即使使用EmptyCellT ext=""显示仍然是0.00,而我要的结果是空。

GridCtrl使用小结

GridCtrl使用小结

GridCtrl使用小结第一篇:GridCtrl使用小结GridCtrl使用详解CGridCtrl类主要是通过grid样式显示数据在单文档中的使用方法步骤一初始化在CView类的.h头文件中包含文件:#include “Gridctrl.h” 并且手写加入如下的成员函数:CGridCtrl * m_pGridCtrl;步骤二构造与析构构造函数中:m_pGridCtrl = NULL;析构函数中:if(m_pGridCtrl)delete m_pGridCtrl;步骤三如果需要打印功能的话添加同名打印函数代码在CView类的OnBeginPrinting()函数中添加如下代码: if(m_pGridCtrl)m_pGridCtrl->OnBeginPrinting(pDC,pInfo);//简单吧,这就是类的好处其它两个打印函数也一样的做法.步骤四在OnInitaUpdate()函数中或者你自己添加的要显示Grid的消息函数中如下初始化: //创建非模式对话框 CDlg *dlg;dlg=new CDlg();dlg->Create(IDD_Dlg,this);//初始化GridCtrl控件if(m_pGridCtrl!=NULL){ deletem_pGridCtrl;m_pGridCtrl=NULL;} if(m_pGridCtrl == NULL){ // Create the Gridctrl object m_pGridCtrl = new CGridCtrl;if(!m_pGridCtrl)return 0;// Create the Gridctrl window CRectrect;GetClientRect(rect);m_pGridCtrl->Create(rect, this, 100);// fill it up with stuff m_pGridCtrl->SetEditable(false);m_pGridCtrl->SetTextBkColor(R GB(0xFF, 0xFF, 0xE0));//黄色背景m_pGridCtrl->EnableDragAndDrop(false);try{ m_pGridCtrl->SetRowCount(k);//设置行数为k行m_pGridCtrl->SetColumnCount(4);//k列m_pGridCtrl->SetFixedRowCount(1);//标题行为一行m_pGridCtrl->SetFixedColumnCount(1);//同上} catch(CMemoryException*e){ e->ReportError();e->Delete();return 0;} //填充列标题int row=0;for(int col=0;col<4;col++){ GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(col==0){ Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.strText.Format(_T(“【类别】”),col);} else if(col==1){ Item.nFormat = DT_LEFT|DT_WORDBREAK;Item.strText.Format(_T(“第一列”),col);} else if(col==2){ Item.nFormat = DT_LEFT|DT_WORDBREAK;Item.strText.Format(_T(“第二列”),col);} m_pGridCtrl->SetItem(&Item);} // fill rows/cols with text for(row = 1;row < k;row++)for(col = 0;col < h;col++){ GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(col < 1){ //行标题头Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;Item.strText.Format(_T(“%d”),row);} else if(col==1){ //第一列的值Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS |DT_NOPREFIX;str=“aa”;Item.strText.Format(_T(“%s”),str);}els e if(col==2){ //第二列第值Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS |DT_NOPREFIX;CStringstr;str=“bb”;Item.strText.Format(_T(“% s”),str);} m_pGridCtrl->SetItem(&Item);} m_pGridCtrl->AutoSize();//--------------设置行列距------------------for(int a=1;aSetRowHeight(a,21);//设置各行高m_pGridCtrl->SetRowHeight(0,24);//设置0行高m_pGridCtrl->SetColumnWidth(1,110);//设置2列宽m_pGridCtrl->SetColumnWidth(2,160);//设置3列宽m_pGridCtrl->SetColumnWidth(3,100);//设置4列宽} 上例取自实际工程,稍有修改!部分注释: void SetVirtualMode(TRUE)//设为虚模式BOOL SetRowCount(intnRows)//设置总的行数。

CGridCtrl学习指南

CGridCtrl学习指南

CGridCtrl学习指南当我努力为显示和编辑现有表中的数据而使用 CListCtrl 到了极限之后,我意识到我所需要的只不过是一个专用的Grid控件而已。

于是我开始着手写自己的Grid控件,但为了节省时间我决定修改Joe Willcoxson's的免费控件 WorldCom,你可以在以下站点/chinajoe/wcmfclib.html 找到这个东东。

为了让它能做我要做的事情,我分解了他的代码,并且重新修改。

由于代码经过太多的修改,我甚至不能确信最终是否还存在最初的代码。

但无论如何,Joe的代码是一个大框架,而我只是在上面进行加工而已。

工程一开始的时候是计划尽可能的简单但是当我不断发现我不得不考虑新特色的时候,它迅速的膨胀成为一个梦魇。

虽然测试并不是没有遗漏--但是我还是坚信情形不会变得太坏J。

Joe很善意的允许我开放这个资源而不附加任何的语句(毕竟那是基于他的代码),但是由于工程象马拉松似的,所以我在这段代码中使用了两个非常不成熟的条件:这段代码可以以任何方式用于已编译的形式中(包括商业用途)。

只要代码不适用,即使没有作者同意,作者姓名和所有版权信息都原封不动,你可以对代码进行任何形式的使用。

但是,如果没有作者的同意,这篇文章和附带的源代码都不能放在任何网站或论坛上。

你就把它当作是没有任何担保的软件,随意使用吧!我已经尽量除去任何不良的\特征\,对由它引起的任何损害,时间的浪费或者数据丢失等,我不负任何责任。

希望不要问太多关于继续开发下去的到底有多大工作量的问题。

如果你真的要用于商业场合,请给我发email让我知道。

如果没有多少人使用的话,开放和维护/升级代码就没有任何意义。

控件的特点:●使用鼠标可以进行单元格的选择,还可以辅助ctrl和shift的组合键进行选择。

也可以取消选择。

● 行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。

● 双击区分点,行或者列可以按照大小自动排序● 可以对任何列或行固定● 单元格可以有不同文本和背景颜色的个性化设置● 单元格可以有字体的个性化设置● 单元格可以标注\只读\或者其他的状态设置及检测● OLE的拖放动作● Ctrl-C, Ctrl-X和Ctrl-V执行拷贝、剪切、粘贴操作,Ctrl-A全选● 当单元格成为焦点,并且在单元格的编辑区域按下字符键,就意味着在那个单元格进行编辑了● 支持微软的智能鼠标● 可以在单元格中加入图片● 对大型数据可以使用\虚拟\模式● 充分的打印支持,支持文档/浏览环境(包括打印预览)或是基于会话的应用(不支持打印预览)● 可选的\列表模式\,包括对行的全选或单选,还有单击列标题提示进行插入的操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
FocusedRow_id = Convert.ToInt32(rowIdObj);
}
}
view plaincopy to clipboardprint?
//焦点行的FocusedHandle为:
view.FocusedColumn = view.Columns["bumen"]; view plaincopy to clipboardprint?
//当焦点行发生改变时执行 获取选中焦点行id
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
int intRowHandle = e.FocusedRowHandle;
object rowIdObj = gridView1.GetRowCellValue(intRowHandle, "id");
if (DBNull.Value != rowIdObj)//做个判断否则获取不到id后报错
ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;
view.FocusedColumn = view.Columns["bumen"];
//设置焦点行的焦点单元格的位置
ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;
ColumnView view = (ColumnView)gridControl_Gongzi.FocusedView;
if(view.IsLastRow)
{
if (FocuseRow_Handle == 0)
{
int intRowHandle = e.RowHandle;
FocusedRow_bumen = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "bumen"));
object rowJibengongziObj = gridView1.GetRowCellValue(intRowHandle, "jibengongzi");
if (DBNull.Value != rowJibengongziObj)
{
{
FocusedRow_id = Convert.ToInt32(rowIdObj);
}
//获取焦点行任意单元格的数据
ColumnView cv = (ColumnView)gridControl_Gongzi.FocusedView;//重新获取此ID 否则无法从表头连删获取不到id
FocuseRow_Handle = -999998;
//获取焦点行的handle
ColumnView newview = (ColumnView)gridControl_Gongzi.FocusedView;
FocuseRow_Handle = newview.FocusedRowHandle;
if (DBNull.Value != rowIdObj)
{
FocusedRow_id = Convert.ToInt32(rowIdObj);
FocusedRow_jibengongzi = Convert.ToDecimal(rowJibengongziObj);
}
} view plaincopy to clipboardprint?
//设置焦点行的焦点单元格的位置
//回车添加新行
private void gridView1_KeyPress(object sender, KeyPressEventArgs e)
Байду номын сангаас
{
if (e.KeyChar == 13)
{
newview.FocusedColumn = newview.Columns["bumen"];//定位焦点网格的位置
FocuseRow_Handle = newview.FocusedRowHandle;//获取新焦点行的FocuseRowHandle 并初始化全局变量FocuseRow_Handle供保存操作时判断是update还是insert
{
int intRowHandle = e.RowHandle;
FocusedRow_bumen = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "bumen"));
if (DBNull.Value != rowIdObj)//做个判断否则获取不到id后报错
{
FocusedRow_id = Convert.ToInt32(rowIdObj);
}
object rowIdObj = gridView1.GetRowCellValue(focusedhandle, "id");
if (DBNull.Value != rowIdObj)
view plaincopy to clipboardprint?
//获取焦点行任意单元格的数据
ColumnView cv = (ColumnView)gridControl_Gongzi.FocusedView;//重新获取此ID 否则无法从表头连删获取不到id
int focusedhandle = cv.FocusedRowHandle;
int focusedhandle = cv.FocusedRowHandle;
object rowIdObj = gridView1.GetRowCellValue(focusedhandle, "id");
{
int intRowHandle = e.FocusedRowHandle;
object rowIdObj = gridView1.GetRowCellValue(intRowHandle, "id");
object rowJibengongziObj = gridView1.GetRowCellValue(intRowHandle, "jibengongzi");
if (DBNull.Value != rowJibengongziObj)
{
FocusedRow_jibengongzi = Convert.ToDecimal(rowJibengongziObj);
}
}
//当数据发生变化时执行
private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e)
关于XtraGrid的使用(GridControl小结)来源:51编程网发布时间:2010-04-19Hits:146
DevExpress XtraGrid的使用(AspxGridControl小结) 收藏
自定义焦点行的方法: gridView_bcode.FocusedRowHandle = focuseRowInt; //通过设置GridView 的FocusedRowHandle属性
{
gridView1.AddNewRow();
ColumnView newview = (ColumnView)gridControl_Gongzi.FocusedView;
FocusedRow_xingming = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "xingming"));
//FocusedRow_jibengongzi = Convert.ToDecimal(gridView1.GetRowCellValue(intRowHandle, "jibengongzi"));
}
//当焦点行发生改变时执行 获取选中焦点行id
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
}
view plaincopy to clipboardprint?
//当数据发生变化时执行
private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e)
FocusedRow_xingming = Convert.ToString(gridView1.GetRowCellValue(intRowHandle, "xingming"));
//FocusedRow_jibengongzi = Convert.ToDecimal(gridView1.GetRowCellValue(intRowHandle, "jibengongzi"));
GridControl属性
相关文档
最新文档