c#DEV控件使用.docx
《c#DEV控件使用.docx》由会员分享,可在线阅读,更多相关《c#DEV控件使用.docx(14页珍藏版)》请在冰豆网上搜索。
![c#DEV控件使用.docx](https://file1.bdocx.com/fileroot1/2023-1/26/4125f4c9-b8db-4caf-9a5d-ec7f8659af0e/4125f4c9-b8db-4caf-9a5d-ec7f8659af0e1.gif)
c#DEV控件使用
使用下面的示例代码,以获得当前编辑的值。
stringeditingValue;
if(gridControl1.KeyboardFocusView.IsEditing)
editingValue=gridControl1.KeyboardFocusView.EditingValue.ToString();
///
///由资源文件获取图片
///
///
///
byte[]GetImage(intkey)
{
Imageimg=DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(string.Format("RiverSys.Resources.{0}.gif",key.ToString()),typeof(RiverInfos).Assembly);
returnDevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img,ImageFormat.Gif);
}
privatevoidrILinkEditInfoDel_Click(objectsender,EventArgse)
{
if(XtraMessageBox.Show("请确定是否删除当前记录?
","警告",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes)
{
DataRowrow=gvInfos.GetDataRow(gvInfos.FocusedRowHandle);
delByCode(row["Code"].ToString());
XtraMessageBox.Show("操作成功!
");
}
}二、绑定非数据表中列
Hashtableht=newHashtable();
privatevoidgridView6_CustomUnboundColumnData(objectsender,DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgse)
{
GridViewView=senderasGridView;
if(e.RowHandle>=0)
{
objectneedAlert=View.GetRowCellValue(e.RowHandle,View.Columns["needAlert"]);
if(needAlert!
=null&needAlert!
=DBNull.Value&&needAlert.ToString().Trim()!
="0"&View.GetRowCellValue(e.RowHandle,View.Columns["Value"])!
=DBNull.Value)
{
decimalAverValue=Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns["Value"]));
objectMinValue=View.GetRowCellValue(e.RowHandle,View.Columns["MinValue"]);
objectMaxVlaue=View.GetRowCellValue(e.RowHandle,View.Columns["MaxValue"]);
if(MinValue!
=DBNull.Value&MinValue!
=null&MaxVlaue.ToString()!
=""&MaxVlaue!
=DBNull.Value&&MaxVlaue!
=null&MaxVlaue.ToString()!
="")
{
decimalgridColumn2=Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns["MinValue"]));
decimalgridColumn1=Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns["MaxValue"]));
if(gridColumn2>AverValue||AverValue>gridColumn1)
{
if(!
ht.ContainsKey("pic"))
ht.Add("pic",GetImage
(1));
e.Value=ht["pic"];
}
}
}
}
}
///
///由资源文件获取图片
///
///
///
byte[]GetImage(intkey)
{
Imageimg=DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(string.Format("RiverSys.Resources.{0}.gif",key.ToString()),typeof(RiverInfos).Assembly);
returnDevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img,ImageFormat.Gif);
}
///
///动态根据条件设置行样式
///
///
///
privatevoidgridView6_RowStyle(objectsender,DevExpress.XtraGrid.Views.Grid.RowStyleEventArgse)
{
GridViewView=senderasGridView;
if(e.RowHandle>=0)
{
objectneedAlert=View.GetRowCellValue(e.RowHandle,View.Columns["needAlert"]);
if(needAlert!
=null&needAlert!
=DBNull.Value&&needAlert.ToString().Trim()!
="0"&View.GetRowCellValue(e.RowHandle,View.Columns["Value"])!
=DBNull.Value)
{
decimalAverValue=Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns["Value"]));
objectMinValue=View.GetRowCellValue(e.RowHandle,View.Columns["MinValue"]);
objectMaxVlaue=View.GetRowCellValue(e.RowHandle,View.Columns["MaxValue"]);
if(MinValue!
=DBNull.Value&MinValue!
=null&MaxVlaue.ToString()!
=""&MaxVlaue!
=DBNull.Value&&MaxVlaue!
=null&MaxVlaue.ToString()!
="")
{
decimalgridColumn2=Convert.ToDecimal(MinValue);
decimalgridColumn1=Convert.ToDecimal(MaxVlaue);
if(gridColumn2>AverValue||AverValue>gridColumn1)
{
e.Appearance.ForeColor=Color.Red;
e.Appearance.BackColor=Color.LightGray;
}
}
}
}
}三、GridControl中颜色选择控件
privatevoidgvMapColor_CustomUnboundColumnData(objectsender,DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgse)
{
GridViewview=senderasGridView;
DataViewdv=view.DataSourceasDataView;
if(e.IsGetData)
{
stringstrVal=dv[e.ListSourceRowIndex]["Color"].ToString();
if(strVal!
="")
{
//e.Value=DevExpress.Utils.StyleLayout.ColorFromString(strVal);
e.Value=Common.HexToColor(strVal);
}
}
else
{
//ColorcolorVal=DevExpress.Utils.StyleLayout.ColorFromString(e.Value.ToString());
ColorcolorVal=(Color)e.Value;
dv[e.ListSourceRowIndex]["Color"]=Common.RGB_HEX(colorVal.ToArgb());
}
}四、关于GridControl验证示例
/**////
///初始化GridView,绑定数据
///
///
privatevoidGridViewBindData(stringparentId)
{
this.gridView1.Columns.Clear();
this.FDs=areaSetupActionHelper.getDsRegionByParentId(parentId);
this.gridCArea.DataSource=this.FDs.Tables[0].DefaultView;
this.gridView1.Columns["id"].VisibleIndex=-1;
this.gridView1.Columns["childCounts"].VisibleIndex=-1;
this.gridView1.Columns["reg_id"].Caption="区划编号";
this.gridView1.Columns["reg_name"].Caption="区划名称";
this.gridView1.Columns["parent_id"].Caption="父区划编号";
this.gridView1.Columns["reg_desc"].Caption="区划描述";
this.gridView1.Columns["parent_id"].ImageIndex=1;
this.gridView1.Columns["reg_desc"].ImageIndex=0;
RepositoryItemTextEdittextEditReg_Id=newRepositoryItemTextEdit();
textEditReg_Id.Mask.EditMask=parentId+"\\d{2,3}";
textEditReg_Id.Mask.MaskType=DevExpress.XtraEditors.Mask.MaskType.Regular;
this.gridView1.Columns["reg_id"].ColumnEdit=textEditReg_Id;
this.gridView1.Columns["reg_desc"].ColumnEdit=newRepositoryItemMemoExEdit();
TreeListNodenode=this.treelArea.FocusedNode.ParentNode;
stringfid=node==null?
"0":
node.GetValue("RegID").ToString().Trim();
DataSetds=areaSetupActionHelper.getDsRegionByParentId(fid);
RepositoryItemLookUpEditlookUEParent_Id=newRepositoryItemLookUpEdit();
lookUEParent_Id.Columns.Add(newLookUpColumnInfo("reg_id",40,"区划编号"));
lookUEParent_Id.Columns.Add(newLookUpColumnInfo("reg_name",40,"区划名称"));
lookUEParent_Id.DataSource=ds.Tables[0].DefaultView;
lookUEParent_Id.ValueMember="reg_id";
lookUEParent_Id.DisplayMember="reg_id";
this.gridView1.Columns["parent_id"].ColumnEdit=lookUEParent_Id;
}
/**////
///gridView单元格验证的相关处理程序
///
///
///
privatevoidgridView1_ValidatingEditor(objectsender,DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgse)
{
if(e.Valid==false&this.gridView1.FocusedColumn.FieldName=="reg_id")
{
e.ErrorText="区划编号不合法!
\n应为父区划编号加2~3位数据组成!
";
}
if(this.gridView1.FocusedColumn.FieldName=="reg_name")
{
Regexreg=newRegex(@"[\u4e00-\u9fa5]{1,20}");
Matchm=reg.Match(e.Value.ToString().Trim());
if(m.Length!
=e.Value.ToString().Trim().Length)
{
e.Valid=false;
e.ErrorText="区划名称应为汉字\n长度为1至20";
}
}
}
privatevoidgridView1_InvalidValueException(objectsender,InvalidValueExceptionEventArgse)
{
if(MyDialog.Alert(" 您所填写的内容不符合规则\n 要放弃您刚才对此项所做的更改吗?
","您所编辑的内容不符合规则",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes)
{
e.ExceptionMode=ExceptionMode.Ignore;
}
}
/**////
///gridView行验证的相关处理程序
///
privatevoidgridView1_ValidateRow(objectsender,DevExpress.XtraGrid.Views.Base.ValidateRowEventArgse)
{
stringregid=this.gridView1.GetRowCellValue(e.RowHandle,"reg_id").ToString().Trim();
stringregName=this.gridView1.GetRowCellValue(e.RowHandle,"reg_name").ToString().Trim();
if(regid.Length<1)
{
e.Valid=false;
this.gridView1.SetColumnError(this.gridView1.Columns["reg_id"],"请填写区划编号!
",DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default);
//e.ErrorText="区划名称不能为空!
";
}
if(regName.Length<1)
{
e.Valid=false;
this.gridView1.SetColumnError(this.gridView1.Columns["reg_name"],"区划名称不能为空!
",DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default);
}
}
privatevoidgridView1_InvalidRowException(objectsender,DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgse)
{
if(e.RowHandle>=0)
{
if(this.gridView1.GetRowCellValue(e.RowHandle,this.gridView1.Columns["reg_id"]).ToString().Trim()==""||this.gridView1.GetRowCellValue(e.RowHandle,this.gridView1.Columns["reg_name"]).ToString().Trim()=="")
{
if(MyDialog.Alert(" 您所填写的内容不符合规则\n 要放弃您刚才对此项所做的更改吗?
","您所编辑的内容不符合规则",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes)
{
e.ExceptionMode=ExceptionMode.Ignore;
}
else
{
e.ExceptionMode=ExceptionMode.NoAction;
}
}
}
else
{
e.ExceptionMode=ExceptionMode.Ignore;
}
}
如果数据源中只包含图片的链接,如何在DevExpressGridControl的一列中显示外部图片?
要实现该功能,可通过非绑定列的方式来实现。
具体实现方法如下:
1.创建了一个非绑定列并设置其相应的属性,属性设置如下:
lFieldName设为Image(该字段名必须是唯一的)
lUnboundType设为UnboundColumnType.Object
lColumnEdit设为RepositoryItemPictureEdit类的实例(该操作PictureEdit为该列的内置编辑器)
2.处理View的CustomUnboundColumnData事件,用于为非绑定列填充数据。
在该事件中需加载图片,将其存放在一个hashtable中,然后再将其提供给对应的单元格。
关键代码:
//获取文件路径
stringGetFileName(stringcolor){
if(color==null||color==string.Empty)
returnstring.Empty;
returncolor+".jpg";
}
//处理CustomUnboundColumnData事件,为非绑定列填充数据
privatevoidgridView1_CustomUnboundColumnData(objectsender,DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgse){
if(e.Column.FieldName=="Image"&&e.IsGetData){
GridViewview=senderasGridView;
stringcolorName=(string)((DataRowView)e.Row)["Color"];
stringfileName=GetFileName(colorName).ToLower();
if(!
Images.ContainsKey(fileName)){
Imageimg=null;
try{
stringfilePath=DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath,ImageDir+fileName,false);
img=Image.FromFile(filePath);
}
catch{
}
Images.Add(fileName,img);
}
e.Value=Images[fileName];
}
}
怎样给DevExpressXtraTreeList添加行的序号?
privatevoidtreeList1_CustomDrawNodeIndicator(objectsender,DevExpress.XtraTreeList.CustomDrawNodeIndicatorEventArgse)
{