一、存储表所有字段信息
存储表所有字段信息 CREATE TABLE [dbo].[TableDetail] ( [ISID] [int] NOT NULL,-- 序号 [TableName] [varchar] (30) NOT NULL,--表名称 [FileNames] [varchar] (30) NOT NULL,--字段么 [FILETYPE] [varchar] (20) NULL, [SFNULL] [varchar] (1) NULL, [SFKEY] [varchar] (1) NULL, [ISIdentity] [varchar] (1) NULL, [LONG] [int] NULL, [DEFAULTS] [nvarchar] (100) NULL, [REM] [nvarchar] (50) NOT NULL, [REMARK] [nvarchar] (500) NOT NULL, [Name] [varchar] (50) NULL, --表名称中文描述 [type2] [varchar] (20) NULL, [IsEdit] [varchar] (2) NULL CONSTRAINT [DF__TableDeta__IsEdi__4D555BD0] DEFAULT ('T'), [DecimalSize] [int] NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[TableDetail] ADD CONSTRAINT [PK__TableDet__5769799B438BFA74] PRIMARY KEY CLUSTERED ([TableName], [FileNames]) ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [Index_TableDetail_TableName] ON [dbo].[TableDetail] ([TableName]) ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [Index_TableDetail_FileNames] ON [dbo].[TableDetail] ([FileNames]) ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [Index_TableDetail_ISID] ON [dbo].[TableDetail] ([ISID]) ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [Index_TableDetail_TableName_FileNames] ON [dbo].[TableDetail] ([TableName], [FileNames]) ON [PRIMARY] GO
表数据:
◆ 获取数据库表中 数据表的个字段的详细属性:字段名、描述、长度、字段类型等等。
--------------- -- 判断要创建的存储过程名是否存在 IF exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].P_Add_TB_Mark') and OBJECTPROPERTY(id, N'IsProcedure') = 1) -- 删除存储过程 DROP procedure [dbo].P_Add_TB_Mark GO CREATE PROC P_Add_TB_Mark @tablename varchar(60), @tableRem varchar(100) AS DELETE dbo.TableDetail WHERE TableName = @tablename INSERT INTO dbo.TableDetail(ISID,TableName,FileNames,FILETYPE,SFNULL,SFKEY,ISIdentity,LONG,DecimalSize,DEFAULTS,REM,IsEdit,type2,NAME,REMARK) SELECT ROW_NUMBER() OVER (ORDER BY C.name) AS ISID, @tablename AS TableName, CONVERT(varchar(100), c.NAME) as FileNames, CONVERT(varchar(100),t.NAME) as FILETYPE, convert(bit,c.IsNullable) as SFNULL, CONVERT(bit,case when exists(select 1 from sysobjects where xtype='PK' and parent_obj=c.id and name in ( select name from sysindexes where indid in( select indid from sysindexkeys where id = c.id and colid=c.colid))) then 1 else 0 end) AS SFKEY ,convert(bit,COLUMNPROPERTY(c.id,c.name,'IsIdentity')) as ISIdentity ,COLUMNPROPERTY(c.id,c.name,'PRECISION') as LONG ,isnull(COLUMNPROPERTY(c.id,c.name,'Scale'),0) as DecimalSize ,CONVERT(varchar(100),ISNULL(CM.text,'')) as DEFAULTS ,CONVERT(varchar(100),isnull(ETP.value,'')) AS REM, 'T' IsEdit, ( CASE WHEN t.name ='int' THEN '数值' WHEN t.name ='numeric' THEN '数值' WHEN t.name ='datetime' THEN '时间' ELSE '文本' END )as type2, @tableRem as NAME, CONVERT(varchar(100), c.NAME) REMARK from syscolumns c inner join systypes t on c.xusertype = t.xusertype left join sys.extended_properties ETP on ETP.major_id = c.id and ETP.minor_id = c.colid and ETP.name ='MS_Description' left join syscomments CM on c.cdefault=CM.id where c.id = object_id(@tablename)
◆ 基础信息表的创建和字段描述
-------------------------------------------------------------------------------------------------------------------- -- 判断要创建的表名是否存在 IF exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[LanMFBase]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN -- 删除表 DROP TABLE [dbo].[LanMFBase] END GO CREATE TABLE [dbo].[LanMFBase] ( [Guid] VARCHAR(60) DEFAULT(NEWID()), [type] [varchar] (60) NOT NULL, [typeDesc] [varchar] (300) NULL, [Field] [varchar] (100) NOT NULL, [FieldDesc] [varchar] (300) NULL, [Switch] [varchar] (100) NULL, [Switch2] [varchar] (100) NULL, [Rem] [varchar] (300) NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[LanMFBase] ADD CONSTRAINT [PK__LanMFBas__B7191643276EDEB3] PRIMARY KEY CLUSTERED ([type] DESC, [Field] DESC) ON [PRIMARY] GO INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '费用管控','1' ,'管控' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '费用管控','2' ,'提示' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '费用管控','3' ,'不管控' ,'' ,'' ,'' ,'基础数据') GO INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类别','1' ,'客户' ,'C' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类别','2' ,'供应商' ,'G' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类别','3' ,'其他' ,'Q' ,'' ,'' ,'基础数据') GO INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','1' ,'金卡' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','2' ,'银卡' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','3' ,'翡翠卡' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','4' ,'一般婴童' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','5' ,'超标' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','6' ,'药店' ,'' ,'' ,'' ,'基础数据') INSERT INTO dbo.LanMFBase( type ,typeDesc ,Field ,FieldDesc ,Switch ,Switch2 ,Rem)VALUES ( '客户类型','7' ,'系统' ,'' ,'' ,'' ,'基础数据') GO ALTER PROC P_Save_Base @guid VARCHAR(60), @type varchar (60), @typeDesc varchar (300), @Field varchar (100), @FieldDesc varchar (300), @Switch varchar (100), @Switch2 varchar (100), @Rem varchar (300) AS IF EXISTS(SELECT TOP 1 1 FROM dbo.LanMFBase WHERE [guid]=@guid) BEGIN UPDATE LanMFBase SET [type] = @type , Field = @Field, typeDesc = @typeDesc, FieldDesc = @FieldDesc , Switch = @Switch, Switch2 = @Switch2 , Rem = @Rem WHERE [guid]=@guid END ELSE BEGIN INSERT INTO LanMFBase([guid],[type],typeDesc,Field,FieldDesc,Switch,Switch2,Rem) VALUES (@guid,@type,@typeDesc,@Field,@FieldDesc,@Switch,@Switch2,@Rem) END GO
◆ 下拉框绑定的数据源和下拉框表的样式数据来源
------------------------------------------------------------ -- 判断要创建的存储过程名是否存在 IF exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].P_Get_OptionVale') and OBJECTPROPERTY(id, N'IsProcedure') = 1) -- 删除存储过程 DROP procedure [dbo].P_Get_OptionVale GO CREATE PROC P_Get_OptionVale @Mark VARCHAR(60) /* EXEC P_Get_OptionVale '销售类型' 仓库、客户、业务员、部门、供应商、 LanMFBase:销售类型、采购类型,产品分类,费用管控,客户类别,客户类型; ValueMember //相当于Editvalue 实际要用的字段 DisplayMember//相当于Text 要显示的字段; ValueMember DisplayMember */ AS IF(@Mark='部门') BEGIN SELECT DepNO AS ValueMember,DeptName AS DisplayMember,DepNO,DeptName FROM dbo.Dept; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'Dept' AND FileNames IN ('DepNO','DeptName') ORDER BY ISID ASC END IF(@Mark='仓库') BEGIN SELECT DepNO AS ValueMember,DepotName AS DisplayMember,DepNO,DepotName FROM Depot; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'Depot' AND FileNames IN ('DepNO','DepotName') ORDER BY ISID ASC END -- IF(@Mark='客户') BEGIN --ValueMember DisplayMember SELECT CusNo AS ValueMember,Name AS DisplayMember,CusNo,SimpName,Name,ClientSort,[Address] FROM dbo.Client WHERE ClientSort = '客户'; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'Client' AND FileNames IN ('CusNo','SimpName','Name','ClientSort','Address') ORDER BY ISID ASC END -- IF(@Mark='供应商') BEGIN --ValueMember DisplayMember SELECT CusNo AS ValueMember,Name AS DisplayMember,CusNo,SimpName,Name,ClientSort,[Address] FROM dbo.Client WHERE ClientSort = '供应商'; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'Client' AND FileNames IN ('CusNo','SimpName','Name','ClientSort','Address') ORDER BY ISID ASC END -- IF(@Mark='业务员' OR @Mark='员工表' OR @Mark='员工' ) BEGIN--ValueMember DisplayMember SELECT EmpID AS ValueMember,EmpName AS DisplayMember,EmpID,EmpName,Sex FROM dbo.Employee; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'Employee' AND FileNames IN ('EmpID','EmpName','Sex') ORDER BY ISID ASC; END --LanMFBase:销售类型、采购类型,产品分类,费用管控,客户类别,客户类型,销售类型 IF(@Mark='销售类型') BEGIN--ValueMember DisplayMember SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='销售类型' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END --ValueMember DisplayMember IF(@Mark='采购类型') BEGIN SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='采购类型' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END -- IF(@Mark='产品分类') BEGIN SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='产品分类' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END -- IF(@Mark='费用管控') BEGIN SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='费用管控' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END -- IF(@Mark='客户类别') BEGIN SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='客户类别' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END -- IF(@Mark='客户类型') BEGIN SELECT Field AS ValueMember,Field AS DisplayMember,[type],Field FROM LanMFBase WHERE [type]='客户类型' ORDER BY typeDesc ASC; ----------------------------------- SELECT FileNames,REM,LONG,type2,DecimalSize,IsEdit FROM dbo.TableDetail WHERE TableName = 'LanMFBase' AND FileNames IN ('type','Field'); END GO
二、DEV / C#调用的通用方法:
/// <summary> /// GridControl 设置的通用方法 /// </summary> /// <param name="dt">列属性:数据表</param> /// <param name="gridView1">gridView1</param> /// <param name="IndicatorWidth">排序列宽度</param> /// <param name="NameSpacePath">实例:命名空间.类名</param> /// <param name="boolEdit">是否控制单元格的值的修改</param> /// <param name="ifCheck">是否添加“复选框”列;true:添加复选框;false:不添加复选框列</param> public void GetSetGridContrl(DataTable dt, GridView gridView1, int IndicatorWidth, string NameSpacePath, bool boolEdit,bool ifCheck) { //设置列索引为-1的列宽 gridView1.IndicatorWidth = IndicatorWidth; gridView1.OptionsView.ShowAutoFilterRow = true; gridView1.OptionsView.ColumnAutoWidth = false; //自动列宽,会出现横向滚动条 gridView1.OptionsView.ColumnAutoWidth = false; //自动列宽 gridView1.BestFitColumns(); gridView1.Appearance.OddRow.BackColor = Color.PaleGoldenrod; // 设置奇数行颜色 // 默认也是白色 可以省略 gridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效 gridView1.Appearance.EvenRow.BackColor = Color.WhiteSmoke; // 设置偶数行颜色 gridView1.OptionsView.EnableAppearanceEvenRow = true; // 使能 // 和和上面绑定 同时使用有效 gridView1.OptionsView.ShowGroupPanel = false; string FileNames = "", REM = "", LONG = "", type2 = "", DecimalSize = "4", IsEdit = "T"; if(ifCheck==true) { gridView1.OptionsSelection.MultiSelect = true; gridView1.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect; gridView1.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.True; } try { for (int i = 0; i < dt.Rows.Count; i++) { FileNames = dt.Rows[i]["FileNames"].ToString(); REM = dt.Rows[i]["REM"].ToString(); LONG = dt.Rows[i]["LONG"].ToString(); type2 = dt.Rows[i]["type2"].ToString(); DecimalSize = dt.Rows[i]["DecimalSize"].ToString(); IsEdit = dt.Rows[i]["IsEdit"].ToString(); //创建 gridview1 列的对象 DevExpress.XtraGrid.Columns.GridColumn Col1 = new DevExpress.XtraGrid.Columns.GridColumn(); try {//根据数据库表中设置的列的宽度 Col1.Width = Convert.ToInt32(LONG); } catch (Exception ex) { Col1.Width = 100;//默认列宽度:100 } Col1.Tag = FileNames; Col1.Name = "Col" + FileNames;//设置控件列Name属性值 Col1.FieldName = FileNames;//数据源字段绑定 Col1.Caption = REM; if (type2 == "时间") { //设置日期时间格式 Col1.DisplayFormat.FormatType = FormatType.DateTime; Col1.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss"; } if (type2 == "数值") { //Col1.DisplayFormat.FormatString = "N4"; //设置Numeric小数位数长度 Col1.DisplayFormat.FormatString = "N" + DecimalSize; Col1.DisplayFormat.FormatType = FormatType.Numeric; } Col1.VisibleIndex = i; if (FileNames == "ValueMember" || FileNames == "DisplayMember")//出现隐藏字段 {//VisibleIndex = -1;时 列自动隐藏 Col1.VisibleIndex = -1; } if (boolEdit == true && IsEdit == "F") { //AllowEdit = false 不允许修改 Col1.OptionsColumn.AllowEdit = false; } gridView1.Columns.Add(Col1); } } catch (Exception) { } //这里设置gridView样式文件保存路径; string xmlfile = path + NameSpacePath.Replace(".", "") + "_" + gridView1.Name + ".xml"; gridView1.Tag = xmlfile; //添加 行索引事件:添加行号。 gridView1.CustomDrawRowIndicator += gridView1_CustomDrawRowIndicator; gridView1.Layout += gridView1_Layout;//布局变化时激发事件:gridView1_Layout //加载gridView样式文件 if (File.Exists(xmlfile)) { gridView1.RestoreLayoutFromXml(xmlfile); } gridView1.OptionsView.ShowFooter = true; //设置gridView选中行字体颜色 gridView1.RowStyle += gridView1_RowStyle; }
/// <summary> /// 添加行号 和 筛选行筛选是不用输入百分号 % /// </summary> public static void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) { GridView gridView1 = (GridView)sender; //设置行索引:列索引等于-1处设置行索引。 if (e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } //设置筛选行不用输入百分号直接筛选 foreach (DevExpress.XtraGrid.Columns.GridColumn item in gridView1.Columns) { item.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains; //筛选条件设置为包含 } }
/// <summary> /// 设置选中行字体颜色 /// </summary> public void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { GridView gridView1 = (GridView)sender; gridView1.Appearance.FocusedRow.ForeColor = Color.Red;//字体颜色 gridView1.Appearance.FocusedRow.BackColor = Color.Linen;//行背景颜色 }
◆ 设置GridLookUpEdit下拉框设置
/// <summary> /// 设置GridLookUpEdit下拉框 gridview控件样式,自动添加列 绑定数据源 /// </summary> /// <param name="strype">类型名</param> /// <param name="glue">控件对象</param> public void GridLookUpEditSetData(string strype, GridLookUpEdit glue) { string NameSpacePath = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName; try { //此方法从数据库 获取下拉框数据源表 和 GridView的每列的列名、字段类型、宽度等等属性 DataSet ds = new MFBase().GetP_Get_OptionVale(strype);//获取当前类所在程序集根路径以及类型名称:ECSHOPV2.Sale.FormSale GridMethod gmthod = new GridMethod(); gmthod.GetSetGridContrl(ds.Tables[1], (GridView)glue.Properties.View, 35, NameSpacePath + strype); glue.Properties.ValueMember = "ValueMember";//设置下拉框 实际值 字段 glue.Properties.DisplayMember = "DisplayMember";//设置下拉框 显示值 字段 glue.Properties.DataSource = ds.Tables[0]; DataRow drr = ds.Tables[0].NewRow(); ds.Tables[0].Rows.InsertAt(drr, 0); glue.Properties.NullText = "--请选择--";//未选择内容时,默认显示文本 gmthod.ColumnVisibleIndex((GridView)glue.Properties.View);//设置自动隐藏的列 } catch (Exception) { } }
◆ gridControl 中 GridView 的样式加载
/// <summary> /// 加载 gridControl 中 GridView 的样式加载 /// </summary> /// <param name="TableName">需要查询的表的名称</param> /// <param name="gv">gridControl 中 GridView 对象</param> public void GridViewLoadStyle(string TableName, GridView gv) { //获取当前窗体类型名 DeclaringType:获取声明该成员的类 FullName string NameSpacePath = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName; try { DataTable dtLanMFBase = new BasicData().GetDataTableField(TableName);//获取当前类所在程序集根路径以及类型名称:ECSHOPV2.Sale.FormSale new GridMethod().GetSetGridContrl(dtLanMFBase, gv, 35, NameSpacePath + TableName);//公用方法,加载GridContrl表格样式 } catch (Exception) { } }
◆ 控件调用代码:
private void frmBPuAdd_Load(object sender, EventArgs e) { string fieldstr = "";
设置GridLookUpEdit下拉框 gridview控件样式,自动添加列 绑定数据源
GridLookUpEditSetData("员工", gridLookUpEditHandlePerson);
GridLookUpEditSetData("仓库", gridLookUpEditDepot);
GridLookUpEditSetData("供应商", gridLookUpEditSupplier);
GridLookUpEditSetData("采购类型", gridLookUpEditStorageType);
GridLookUpEditSetData("部门", gridLookUpEditDept);
//------------------------------------
GridViewLoadStyle("v_PurchDetail", gridView1);
gridControl 中 GridView 的样式加载 v_PurchDetail 必须得在字段表中文维护 表字段各属性值
◆ 单元格输入值 校验
/// <summary> /// 单价和数量 填写时,必须是数值,否则不行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (gridView1.FocusedColumn.Name == "ColQty" || gridView1.FocusedColumn.Name=="ColPrice") { if (e.Value != null) { try { Convert.ToDouble(e.Value); } catch (Exception) { e.ErrorText = "只能输入正数,包括整数和浮点数!";//输入的值 不符合规范是,异常文字提示 e.Valid = false; return; } } } }
◆ 删除当前选中行
gridView1.DeleteSelectedRows();//执行删除行,但是行仍然存在 DataTable dttemp = gridControl1.DataSource as DataTable;//获取数据源表 dttemp.AcceptChanges();//彻底删除行:提交自上次调用 System.Data.DataTable.AcceptChanges() 以来对该表进行的所有更改。
◆ 添加复选框
gridView1.OptionsSelection.MultiSelect = true; gridView1.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect; gridView1.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.True;
获取已勾选行 和 列的相应字段值
for (int i = 0; i < this.gridView1.RowCount; i++) { if (this.gridView1.IsRowSelected(i))//遍历获取当前勾选的行 { CheckPerson = this.gridView1.GetDataRow(i)["CheckPerson"].ToString();//获取指定列的值:数据源字段值 PurchGuid = this.gridView1.GetDataRow(i)["PurchGuid"].ToString(); if (CheckPerson=="") { lst.Add(PurchGuid); } } }
◆ 获取当前选中行的某列的值
((DataRowView)(gridView1.GetFocusedRow())).Row["PurchGuid"].ToString();
◆ 修改单元格的值
更新指定行的指定的列的值
this.gridView1.SetRowCellValue(i, gridView1.Columns["jianshu"], xcjianshu.ToString());
更新选中行的单元格的值
gridView1.SetFocusedRowCellValue("IsPrint", "已打印");//更新当前选中行订单打印状态