DEV控件:gridControl常用属性设置?
?
1.隐藏最上面的GroupPanel
??
gridView1.OptionsView.ShowGroupPanel=
false
;?
?
?
2.得到当前选定记录某字段的值
??
sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();
?
?
3.数据只读
??
gridView1.OptionsBehavior.Editable=
false
;
?
?
4.不显示MasterDetailView
??
gridView1.OptionsDetail.EnableMasterViewMode=
false
;
?
?
5.修改最上面的GroupPanel内容
???
gridView1.GroupPanelText=
"柳生飘絮"
;
?
?
6.设置数据源:
???
gridControl1.DataSource = dt;
???
绑定每一列的FiledName--属性
???
对于Oracle数据库,所有的在设计器里写的程序中的字段名必须大写,否则可能绑定不上字段,sqlserver没有这个限制.
?
?
7.读写拷贝权限设置
??
只读不可拷贝:
????
ColumnViewOptionsBehavior.Editable = False
?
?
??
只读可拷贝:
????
ColumnViewOptionsBehavior.Editable = True
????
OptionsColumn.AllowEdit = True
????
OptionsColumn.ReadOnly = True
?
?
??
可编辑:
????
ColumnViewOptionsBehavior.Editable = True
????
OptionsColumn.AllowEdit = True
????
OptionsColumn.ReadOnly = False
?
?
8.模板列的设置:
??
到Columns中,在他的属性中找到ColumnEdit.
??
以LookUpEdit为例:
??
首先从Designer左边菜单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"
;
?
?
?
?
?
?
9.设某一列文字和标题局中显示??????????????????
???
gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
???
gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
?
?
??
?
10.去掉某一列上面的自动筛选功能(Filter)??????????????????
???
gridView1.Columns[0].OptionsFilter.AllowAutoFilter =
false
;
???
gridView1.Columns[0].OptionsFilter.AllowFilter =
false
;????????????????
???
gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter =
false
;
?
?
??
?
11.设置冻结列(左冻结)
??
gridView1.Columns[0].Fixed= DevExpress.XtraGrid.Columns.FixedStyle.Left;
?
?
??
?
12.得到单元格数据(0行0列)
???
string
ss=gridView1.GetRowCellDisplayText(0,gridView1.Columns[0]);
???
string
ss = gridView1.GetRowCellValue(0,gridView1.Columns[0]);
?
?
??
?
13.设置单元格数据(将0行0列的单元格赋值123)
???
gridView1.SetRowCellValue(0,gridView1.Columns[0],
"123"
);
?
?
??
?
13.手动添加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);
?
?
?
?
14.设置自动增加的行号,需要先添加给gridview添加事件CustomDrawRowIndicator
?
?
????
private
void
gridview_CustomDrawRowIndicator(
object
sender,??????????????????????????? DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
????
{
????????
if
(e.Info.IsRowIndicator && e.RowHandle >= 0)
????????????????
e.Info.DisplayText = (e.RowHandle + 1).ToString();
????
}
?
?
15.删除: (修改了dgvdel里的datagridviewdel方法)
????
public
static
void
datagridviewdel_Dev(DevExpress.XtraGrid.Views.Grid.GridView Mydgv)
????
{
???????
if
(MessageBox.Show(
"你确定要删除选中的记录吗?"
,
"删除提示"
,MessageBoxButtons.YesNo,?????????????? MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2,
false
) == DialogResult.Yes)
???????
{
???????????
int
iSelectRowCount = Mydgv.SelectedRowsCount;
???????????
if
(iSelectRowCount > 0)
???????????
{
?????????????
Mydgv.DeleteSelectedRows();
???????????
}
???????
}
????
}
??
?
16. 新增: (对于新增,其本身的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.Columns[1]));
?
?
????
}
?
?
??
?
17. 保存 (第三方控件提供的RefreshData和RefreshDataSource方法对于保存数据都不好使,最后还是使用了Dgvsave的datagridviewsave方法,用这个方法就可以)
?
?
?
?
18.特效:gridcontrol中有5种view 型式,普通的是gridview,然后分别为cardview、BandedView、Advanced BandedView、LayoutView;共5种。
??
1)、view组中把OptionView下的viewmode 设置成“Carousel”就达到这种“旋转木马”式的gridcontrol view 特效了
??
2)、layoutView1.OptionsCarouselMode.PitchAngle 这个属性决定“旋转木马”的pitch angle 螺距角; 螺旋角; 螺旋升角; 俯仰角; 倾角; 节锥半角?
??
3)、Roll Angle 属性决定着 倾侧角度
??
4)、指定数据源,显示数据:
??
????????
private
void
showData(List<Employee > list)
????????
{
????????????
DataTable dt =
new
DataTable(
"OneEmployee"
);
????????????
dt.Columns.Add(
"Caption"
,System.Type.GetType(
"System.String"
));
????????????
dt.Columns.Add(
"Department"
,System.Type.GetType(
"System.String"
));
????????????
dt.Columns.Add(
"PhotoName"
,System.Type.GetType(
"System.Byte[]"
));
?
?
????????????
for
(
int
i = 0; i < list.Count; i++)
????????????
{
????????????????
DataRow dr = dt.NewRow();
????????????????
dr[
"Caption"
] = list[i].Name;
????????????????
dr[
"Department"
] = list[i].Department;
????????????????
string
imagePath =
@"D:C#photos"
+ list[i].PhotoPath;
????????????????
dr[
"PhotoName"
] = getImageByte(imagePath);
????????????????
dt.Rows.Add(dr);
????????????
}
????????????
gridControl1.DataSource = dt;
????????
}
?
?
????????
????????
private
byte
[] getImageByte(
string
imagePath)
????????
{
????????????
FileStream files =
new
FileStream(imagePath,FileMode.Open);
????????????
byte
[] imgByte =
new
byte
[files.Length ];
????????????
files.Read(imgByte,imgByte.Length);
????????????
files.Close();
????????????
return
imgByte;
????????
}
?
?
19.检查数据的有效性
??
在gridview的ValidateRow事件中加入检查代码:
??
#region 检查数据
??
private
void
gridView1_ValidateRow(
object
sender,ValidateRowEventArgs e)
??
{
??
GridView view = sender
as
GridView;
??
view.ClearColumnErrors();
?
?
??
if
(view.GetRowCellValue(e.RowHandle,
"ReceiveDate"
) == DBNull.Value)
??
{
??
e.Valid =
false
;
??
view.SetColumnError(view.Columns[
"ReceiveDate"
],
"必须指定日期"
);
??
}
?
?
??
}
??
#endregion
??
调用gridview.UpdateCurrentRow()方法执行检查
?
?
?
?
最常用的DevExpress Winform 4个代码片段:
?
?
一 、GridControl的删除操作
?
?
private
void
rILinkEditInfoDel_Click(
object
sender,EventArgs e)
{
?????
if
(XtraMessageBox.Show(
"请确定是否删除当前记录?"
,
"警告"
,MessageBoxIcon.Warning) == DialogResult.Yes)
?????
{
?????????
DataRow row = gvInfos.GetDataRow(gvInfos.FocusedRowHandle);
??????????
delByCode(row[
"Code"
].ToString());
?????????
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[
"needAlert"
]);
?????????
if
(needAlert !=
null
& needAlert != DBNull.Value && needAlert.ToString().Trim() !=
"0"
& View.GetRowCellValue(e.RowHandle,View.Columns[
"Value"
]) != DBNull.Value)
?????????
{
?????????????
decimal
AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns[
"Value"
]));
?????????????
object
MinValue = View.GetRowCellValue(e.RowHandle,View.Columns[
"MinValue"
]);
?????????????
object
MaxVlaue = View.GetRowCellValue(e.RowHandle,View.Columns[
"MaxValue"
]);
?????????????
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[
"MinValue"
]));
?????????????????
decimal
gridColumn1 = 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"
];
?????????????????
}
?????????????
}
?????????
}
?????
}
}
?
?
/// <summary>
/// 由资源文件获取图片
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
byte
[] GetImage(
int
key)
{
?????
Image img = DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(
string
.Format(
"RiverSys.Resources.{0}.gif"
,key.ToString()),
typeof
(RiverInfos).Assembly);
?????
return
DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img,ImageFormat.Gif);
}
?
?
/// <summary>
/// 动态根据条件设置行样式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
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[
"needAlert"
]);
?????????
if
(needAlert !=
null
& needAlert != DBNull.Value && needAlert.ToString().Trim() !=
"0"
& View.GetRowCellValue(e.RowHandle,View.Columns[
"Value"
]) != DBNull.Value)
?????????
{
?????????????
decimal
AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle,View.Columns[
"Value"
]));
?????????????
object
MinValue = View.GetRowCellValue(e.RowHandle,View.Columns[
"MinValue"
]);
?????????????
object
MaxVlaue = View.GetRowCellValue(e.RowHandle,View.Columns[
"MaxValue"
]);
?????????????
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][
"Color"
].ToString();
?????????
if
(strVal !=
""
)
?????????
{
?????????????
?????????????
e.Value = Common.HexToColor(strVal);
?????????
}
?????
}
?????
else
?????
{
?????????
?????????
Color colorVal = (Color)e.Value;
?????????
dv[e.ListSourceRowIndex][
"Color"
] = Common.RGB_HEX(colorVal.ToArgb());
?????
}
}
?
?
四、关于 GridControl 验证示例
?
?
/// <summary>
/// 初始化GridView,绑定数据
/// </summary>
/// <param name="parentId"></param>
private
void
GridViewBindData(
string
parentId)
{
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;
?
?
????
RepositoryItemTextEdit textEditReg_Id =
new
RepositoryItemTextEdit();
????
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 =
new
RepositoryItemMemoExEdit();
?
?
????
TreeListNode node =
this
.treelArea.FocusedNode.ParentNode;
????
string
fid = node==
null
?
"0"
:node.GetValue(
"RegID"
).ToString().Trim();
????
DataSet ds = areaSetupActionHelper.getDsRegionByParentId(fid);
????
RepositoryItemLookUpEdit lookUEParent_Id =
new
RepositoryItemLookUpEdit();
????
lookUEParent_Id.Columns.Add(
new
LookUpColumnInfo(
"reg_id"
,40,
"区划编号"
));
????
lookUEParent_Id.Columns.Add(
new
LookUpColumnInfo(
"reg_name"
,
"区划名称"
));
????
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;
}
/// <summary>
/// gridView单元格验证的相关处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
gridView1_ValidatingEditor(
object
sender,DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
{
if
(e.Valid ==
false
&
this
.gridView1.FocusedColumn.FieldName ==
"reg_id"
)
{
??????
e.ErrorText =
"区划编号不合法!n应为父区划编号加2~3位数据组成!"
;???
????
}
????
if
(
this
.gridView1.FocusedColumn.FieldName ==
"reg_name"
)
????
{?????
?????
Regex reg=
new
Regex(
@"[u4e00-u9fa5]{1,20}"
);
?????
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 要放弃您刚才对此项所做的更改吗?"
,
"您所编辑的内容不符合规则"
,MessageBoxIcon.Warning) == DialogResult.Yes)
????
{
?????
e.ExceptionMode = ExceptionMode.Ignore;
????
}
}
?
?
/// <summary>
/// gridView行验证的相关处理程序
/// </summary>
private
void
gridView1_ValidateRow(
object
sender,DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
{
string
regid =
this
.gridView1.GetRowCellValue(e.RowHandle,
"reg_id"
).ToString().Trim();
string
regName =
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);
??????
????
}
????
if
(regName.Length < 1)
????
{
?????
e.Valid =
false
;
?????
this
.gridView1.SetColumnError(
this
.gridView1.Columns[
"reg_name"
],
"区划名称不能为空!"
,DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default);
????
}
}
?
?
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[
"reg_id"
]).ToString().Trim() ==
""
||
this
.gridView1.GetRowCellValue(e.RowHandle,
this
.gridView1.Columns[
"reg_name"
]).ToString().Trim() ==
""
)
?????
{
??????
if
(MyDialog.Alert(
" 您所填写的内容不符合规则n 要放弃您刚才对此项所做的更改吗?"
,MessageBoxIcon.Warning) == DialogResult.Yes)
??????
{
???????
e.ExceptionMode = ExceptionMode.Ignore;
??????
}
??????
else
??????
{
???????
e.ExceptionMode = ExceptionMode.NoAction;
??????
}
?????
}
????
}
????
else
????
{
?????
e.ExceptionMode = ExceptionMode.Ignore;
????
}
}