c#,DEV控件使用
更新时间:2024-02-01 04:24:01 阅读量: 教育文库 文档下载
使用下面的示例代码,以获得当前编辑的值。
string editingValue;
if(gridControl1.KeyboardFocusView.IsEditing)
editingValue = gridControl1.KeyboardFocusView.EditingValue.ToString();
///
/// 由资源文件获取图片 ///
/// byte[] GetImage(int key) {
Image img = DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(string.Format(\sources.{0}.gif\ return DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif); }
private void rILinkEditInfoDel_Click(object sender, EventArgs e)
{
if (XtraMessageBox.Show(\请确定是否删除当前记录?\\警告\MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {
DataRow row = gvInfos.GetDataRow(gvInfos.FocusedRowHandle); delByCode(row[\ XtraMessageBox.Show(\操作成功!\ }
}二、绑定非数据表中列
Hashtable ht = new Hashtable();
private
void
gridView6_CustomUnboundColumnData(object
sender,
DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
GridView View = sender as GridView; if (e.RowHandle >= 0) {
object
needAlert
=
View.GetRowCellValue(e.RowHandle,
View.Columns[\
if (needAlert != null & needAlert != DBNull.Value && needAlert.ToString().Trim() != \alue(e.RowHandle, View.Columns[\alue\alue) {
decimal AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns[\alue\ object MinValue View.Columns[\alue\ object MaxVlaue View.Columns[\alue\
if (MinValue != DBNull.Value & MinValue != null & MaxVlaue.ToString() != \& MaxVlaue != DBNull.Value && MaxVlaue != null & MaxVlaue.ToString() != \ {
decimal
gridColumn2
= =
Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns[\alue\ decimal gridColumn1 Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns[\alue\ if (gridColumn2 > AverValue || AverValue > gridColumn1) {
if (!ht.ContainsKey(\ ht.Add(\ e.Value = ht[\ } } }
} }
///
/// 由资源文件获取图片 ///
/// byte[] GetImage(int key) {
Image
img
=
= =
View.GetRowCellValue(e.RowHandle, View.GetRowCellValue(e.RowHandle,
DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(string.Format(\sources.{0}.gif\ return
ImageFormat.Gif); }
///
/// 动态根据条件设置行样式 ///
///
DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img,
gridView6_RowStyle(object sender,
DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) {
GridView View = sender as GridView; if (e.RowHandle >= 0) {
object
needAlert
=
View.GetRowCellValue(e.RowHandle,
View.Columns[\
if (needAlert != null & needAlert != DBNull.Value && needAlert.ToString().Trim() != \alue(e.RowHandle, View.Columns[\alue\alue) {
decimal AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns[\alue\
object MinValue View.Columns[\alue\
object MaxVlaue View.Columns[\alue\
= =
View.GetRowCellValue(e.RowHandle, View.GetRowCellValue(e.RowHandle,
if (MinValue != DBNull.Value & MinValue != null & MaxVlaue.ToString() != \& MaxVlaue != DBNull.Value && MaxVlaue != null & MaxVlaue.ToString() != \ {
decimal gridColumn2 = Convert.ToDecimal(MinValue); decimal gridColumn1 = Convert.ToDecimal(MaxVlaue); if (gridColumn2 > AverValue || AverValue > gridColumn1) {
e.Appearance.ForeColor = Color.Red;
e.Appearance.BackColor = Color.LightGray; } }
} }
}三、GridControl 中颜色选择控件
private
void
gvMapColor_CustomUnboundColumnData(object
sender,
DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
GridView view = sender as GridView;
DataView dv = view.DataSource as DataView; if (e.IsGetData)
{
string strVal = dv[e.ListSourceRowIndex][\ if (strVal != \ {
//e.Value = DevExpress.Utils.StyleLayout.ColorFromString(strVal); e.Value = Common.HexToColor(strVal); }
}
else {
//Color colorVal DevExpress.Utils.StyleLayout.ColorFromString(e.Value.ToString()); Color colorVal = (Color)e.Value;
dv[e.ListSourceRowIndex][\al.ToArgb()); }
}四、关于 GridControl 验证示例
/**////
/// 初始化GridView,绑定数据 ///
///
this.gridView1.Columns.Clear();
this.FDs= areaSetupActionHelper.getDsRegionByParentId(parentId); this.gridCArea.DataSource =this.FDs.Tables[0].DefaultView;
this.gridView1.Columns[\
this.gridView1.Columns[\
this.gridView1.Columns[\区划编号\ this.gridView1.Columns[\区划名称\ this.gridView1.Columns[\父区划编号\ this.gridView1.Columns[\区划描述\ this.gridView1.Columns[\ this.gridView1.Columns[\
RepositoryItemTextEdit textEditReg_Id = new RepositoryItemTextEdit(); textEditReg_Id.Mask.EditMask =parentId+\
textEditReg_Id.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Regular;
this.gridView1.Columns[\
this.gridView1.Columns[\
TreeListNode node = this.treelArea.FocusedNode.ParentNode; string fid = node==null?\alue(\ DataSet ds = areaSetupActionHelper.getDsRegionByParentId(fid);
RepositoryItemLookUpEdit lookUEParent_Id = new RepositoryItemLookUpEdit(); lookUEParent_Id.Columns.Add(new LookUpColumnInfo(\区划编号\ lookUEParent_Id.Columns.Add(new LookUpColumnInfo(\区划名称\
=
lookUEParent_Id.DataSource = ds.Tables[0].DefaultView;
lookUEParent_Id.ValueMember = \ lookUEParent_Id.DisplayMember = \
this.gridView1.Columns[\}
/**////
/// gridView单元格验证的相关处理程序 ///
///
private void gridView1_ValidatingEditor(object DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (e.Valid == false&this.gridView1.FocusedColumn.FieldName == \
{
e.ErrorText = \区划编号不合法!\\n应为父区划编号加2~3位数据组成!\ }
if (this.gridView1.FocusedColumn.FieldName == \ {
Regex reg=new Regex(@\ Match m=reg.Match(e.Value.ToString().Trim()); if (m.Length != e.Value.ToString().Trim().Length) { e.Valid = false;
e.ErrorText = \区划名称应为汉字\\n长度为1至20\ } }
}
private void gridView1_InvalidValueException(object sender, InvalidValueExceptionEventArgs e) {
if (MyDialog.Alert(\ 您所填写的内容不符合规则\\n 要放弃您刚才对此项所做的更改吗?\\您所编辑的内容不符合规则\MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
e.ExceptionMode = ExceptionMode.Ignore; } }
/**////
/// gridView行验证的相关处理程序
/// private void gridView1_ValidateRow(object DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
sender, sender,
{
string regid = this.gridView1.GetRowCellValue(e.RowHandle, \string regName = this.gridView1.GetRowCellValue(e.RowHandle, \if ( regid.Length < 1) {
e.Valid = false;
this.gridView1.SetColumnError(this.gridView1.Columns[\\请填写区划编号!\DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default); // e.ErrorText = \区划名称不能为空!\ }
if (regName.Length < 1)
{ e.Valid = false;
this.gridView1.SetColumnError(this.gridView1.Columns[\\区划名称不能为空!\ } } private
void
gridView1_InvalidRowException(object
sender,
DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) {
if (e.RowHandle >= 0) {
if (this.gridView1.GetRowCellValue(e.RowHandle, this.gridView1.Columns[\== \|| this.gridView1.GetRowCellValue(e.RowHandle,
this.gridView1.Columns[\ {
if (MyDialog.Alert(\ 您所填写的内容不符合规则\\n 要放弃您刚才对此项所做的更改吗?\\您所编辑的内容不符合规则\MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {
e.ExceptionMode = ExceptionMode.Ignore; } else
{
e.ExceptionMode = ExceptionMode.NoAction; } } } else {
e.ExceptionMode = ExceptionMode.Ignore;
} }
如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片?
要实现该功能,可通过非绑定列的方式来实现。具体实现方法如下:
1. 创建了一个非绑定列并设置其相应的属性,属性设置如下:
l FieldName设为 Image (该字段名必须是唯一的)
l UnboundType设为 UnboundColumnType.Object
l ColumnEdit设为RepositoryItemPictureEdit类的实例(该操作PictureEdit 为该列的内置编辑器)
2. 处理View的CustomUnboundColumnData事件,用于为非绑定列填充数据。在该事件中需加载图片,将其存放在一个hashtable中,然后再将其提供给对应的单元格。
关键代码:
//获取文件路径
string GetFileName(string color) {
if(color == null || color == string.Empty)
return string.Empty;
return color + \
}
//处理CustomUnboundColumnData事件,为非绑定列填充数据
private void gridView1_CustomUnboundColumnData(object DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
if(e.Column.FieldName == \
GridView view = sender as GridView;
sender,
string colorName = (string)((DataRowView)e.Row)[\
string fileName = GetFileName(colorName).ToLower();
if(!Images.ContainsKey(fileName)) {
Image img = null;
try {
string filePath = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, ImageDir + fileName, false);
img = Image.FromFile(filePath);
}
catch {
}
Images.Add(fileName, img);
}
e.Value = Images[fileName];
}
}
怎样给DevExpress XtraTreeList添加行的序号? private void treeList1_CustomDrawNodeIndicator(object DevExpress.XtraTreeList.CustomDrawNodeIndicatorEventArgs e)
{
TreeList tree = sender as DevExpress.XtraTreeList.TreeList;
IndicatorObjectInfoArgs args = e.ObjectArgs as IndicatorObjectInfoArgs;
args.DisplayText = (tree.GetVisibleIndexByNode(e.Node) + 1).ToString();
sender,
}
怎样在DevExpress XtraTreeList中设置ToolTip?
您可以使用ToolTipController控件,然后通过ToolTipController.GetActiveObjectInfo事件来设置ToolTip 关键代码: private
{
if (e.SelectedControl is DevExpress.XtraTreeList.TreeList)
{
TreeList tree = (TreeList)e.SelectedControl;
TreeListHitInfo hit = tree.CalcHitInfo(e.ControlMousePosition);
if (hit.HitInfoType == HitInfoType.Cell)
{
object cellInfo = new TreeListCellToolTipInfo(hit.Node, hit.Column, null);
string toolTip = string.Format(\(Column: {1}, Node ID: {2})\hit.Node[hit.Column],
hit.Column.VisibleIndex, hit.Node.Id);
e.Info = new DevExpress.Utils.ToolTipControlInfo(cellInfo, toolTip);
}
} }
DevExpress XtraGrid的功能实在强大,刚使用的时候看到一大片属性设置,分不清东南西北,参照demo和使用中的一些经验,记录一下使用方法。
1、 数据绑定(IList)
void
toolTipController1_GetActiveObjectInfo(object
sender,
DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e)
DevExpress.XtraGrid.Views.Grid.GridView gridView1; IList
list.Add(B); ………..
gridControl1.DataSource = list;
2、 在Grid上编辑数据
修改属性gridView1.OptionsView.NewItemRowPosition,设为Top或Bottom可以在Grid上添加数据。
(在demo中原文:a record object must be inherited from the IEditableObject class if you need the ability to cancel newly added records via the grid)
译:如果你需要通过gird取消新建的记录,你的记录对象必须实现IEditableObject
(注:在测试中,感觉不需要继承IEditableObject,在grid编辑后也能实现取消。demo通过实现IEditableObject的BeginEdit、CancelEdit方法,数据编辑后恢复特定数据。不使用grid直接修改数据,可以考虑这种恢复原数据的方法。)
3、 修改列(Column)格式
DevExpress.XtraGrid.Columns.GridColumn col = gridView1.Columns[0];数据对齐方式 col.AppearanceCell.TextOptions.HAlignment, 默认值Default,可选值Default/Near/Center/Far。 说明:以下情况是基于从左到右的文字排列;若是从右到左,用法相反。 Default:数据默认的对齐方式 Near:左对齐 Center:居中对齐 Far:右对齐
列标题 col.Caption
对应绑定数据的属性 col.FieldName 排列顺序 col.VisibleIndex 格式化显示数据
Col.DisplayFormat.FormatType Col.DisplayFormat.Format
Col.DisplayFormat.FormatString
区别:FormatType/FormatString 使用当前系统的语言区域设置,Format使用特定的[url=ms-help://MS.VSCC.v80/MS.VSIPCC.v80/DevExpress.NETv8.2/
DevExpress.XtraData/DevExpressUtilsFormatInfo_FormatTypetopic.htm##]
System.IFormatProvider[/url]设置。
4、 使用Grid内置导航栏
gridControl1.UseEmbeddedNativgator=TruegridControl1.EmbeddedNavigator
5、 GridView内置方式编辑数据
禁止编辑数据 gridView1.OptionsBehavior.Editable = False,默认是True 可编辑。
Gridview内置数据编辑器显示方式 gridView1.OptionsBehavior.EditorShowMode,可选值Default/ MouseDown/MouseUp/ Click。
说明:
Default 多选Cell相当于Click,单选Cell相当于MouseDown
MouseDown 在单元格内按下鼠标键时打开内置编辑器 MouseUp 在单元格内释放鼠标键时打开内置编辑器
Click 在不是编辑状态,但获得焦点的单元格中点击时打开编辑器。点击非焦点单元格时,首先会切换焦点,再点击时才打开编辑器
6、 设定GrideView单元格的内置编辑器
在Run Designer的Columns选中需要变更编辑方式的Column,在ColumnEdit 属性的下拉菜单中选择编辑数据使用的控件。
例1:Person表的CountryID字段的值来自Country表,使用下拉列表显示CountryName编辑
修改CountryIDColumn.ColumnEdit值,选new->LookupEdit,默认命名为repositoryItemLookUpEdit1。展开ColumnEdit属性,将DisplayMember 设为CountryName,DropDownRows是下拉列表的行数,ValueMember设为CountryID。 代码中添加: //init data
repositoryItemLookUpEdit1.DataSource = ds.Tables[Country]; 例2:字段Age是整型,需要使用SpinEdit编辑
修改AgeColumn.ColumnEdit值,选new->SpinEdit。展开ColumnEdit属性,修改MaxValue、MinValue设定最大、最小值。运行时Age的取值只能在MaxValue至MinValue之间选值。
7、 GridView调节行高显示大文本
设定内置导航栏按钮其他属性
默认情况下gridview已单行方式显示,过长的文本只能显示开头部分,鼠标停留在单元格上方有ToolTip显示所有文本。在文本单元格的右边两个按钮供切换显示上下行。若需要在单元格变更行高显示所有文本。使用
gridView1.OptionsView.RowAutoHeight = True;
gridView1.LayoutChanged();也可以通过事件判断文本内容改变行高
private void gridView1_CalcRowHeight(object sender,DevExpress.XtraGrid.Views.Grid.RowHeightEventArgs e) {
if(e.RowHandle >= 0)
e.RowHeight = (int)gridView1.GetDataRow(e.RowHandle)[\}
8、 数据导出
XtraGrid支持Html、Xml、Txt、Xsl导出,对应的导出器是ExportHtmlProvider、ExportXmlProvider、ExportTxtProvider、ExportXslProvider 例:使用html格式导出数据
……
IExportProvider provider = new ExprotHtmlProvider(filename); ExportTo(provider); ……
private void ExportTo(IExportProvider provider) { Cursor currentCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor; this.FindForm().Refresh();
BaseExportLink link = gridView1.CreateExportLink(provider);
(link as GridViewExportLink).ExpandAll = false;
link.Progress += new DevExpress.XtraGrid.Export.ProgressEventHandler(Export_Progress);//进度条事件
link.ExportTo(true);
provider.Dispose();
link.Progress -= new DevExpress.XtraGrid.Export.ProgressEventHandler(Export_Progress); Cursor.Current = currentCursor; }
9、 焦点单元格显示方式
GrideView默认的焦点单元格显示方式是整行选中,焦点单元格高亮。可以调整以下属性进行修改
gridView1.FocusRectStyle :焦点绘画方式 默认DrawFocusRectStyle.CellFocus(单元格)/ DrawFocusRectStyle.RowFocus(行)/ DrawFocusRectStyle.None(不绘画)
bool gridView1.OptionsSelection.EnableAppearanceFocusedCell :是否焦点显示选中的单元格 bool gridView1.OptionsSelection.EnableAppearanceFocusedRow :是否焦点显示选中的行 bool gridView1.OptionsSelection.InvertSelection :是否反显示 bool gridView1.OptionsSelection.MultiSelect:是否使用多选
正在阅读:
c#,DEV控件使用02-01
河北轨道运输职业技术学院优秀个人简历05-30
合作与共赢09-23
黑白装饰画的美感-教案04-08
用大数据玩转电商205-14
2010财政工作总结08-16
《荆轲刺秦王》作文素材运用与点拨05-05
C语言题库(填空题部分)10-17
企业如何选择简历?选择什么样的简历?03-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 控件
- 使用
- DEV