目录 |
|||
1.EF.dll 中的 Form |
2 |
||
2 .EF.DLL 内的自定义控件 |
3 |
||
2.1 控件通用的一些属性 |
3 |
||
2.2 EFDevTextEdit 单行文本框 * |
4 |
||
2.3 EFDevMemoEdit 多行文本编辑框 |
7 |
||
2.4 EFDevSpinEdit 数值输入控件 |
8 |
||
2.5 EFDevButtonEdit 带按钮的文本框 |
9 |
||
2.6 EFDevCalcEdit 带计算器的输入框 |
10 |
||
2.7 EFDevDateEdit 带日历选择的日期输入控件 |
10 |
||
2.8 EFDevTimeEdit 时间输入控件 |
11 |
||
2.9 EFDevCheckEdit 选择框 |
11 |
||
2.10 EFDevRadioGroup 单选框的集合控件 |
12 |
||
2.11 EFSkinTabControl ,EFGroupBox, EFPanel |
13 |
||
2.12 EFDevLookUpEdit 可以多列下拉的选择框 |
13 |
||
2.13 EFDevGrid 列表控件 |
16 |
||
2.13.1 通常步骤. |
16 |
||
2.13.2 获取值,设置值 常用代码。 |
17 |
||
2.13.3 对 EFDevGrid 封装的属性: |
17 |
||
2.13.4 封装的一些事件 |
18 |
||
2.13.4 封装的一些方法 |
19 |
||
2.13.5 其他一些会用到的属性 |
19 |
||
2.13.5.1 列冻结(Fixed 属性) |
19 |
||
2.13.5.2 行变色(GridView 的 RowStyle 事件) |
19 |
||
2.13.5.3 单元格变色(GridView 的 RowCellStyle |
事件) |
19 |
|
2.13.5.4 列控件(列的 ColumnEdit 属性) |
20 |
||
2.13.5.5 一列用不同控件(GridView 的 CustomRowCellEdit |
事件) |
20 |
|
2.13.5.6 单元格验证 (GirdView 的 ValidatingEditor 事件) |
20 |
||
2.13.5.7 保存配置 (通过封装的 SaveLayout 和 LoadLayout |
方法) |
20 |
|
2.13.5.8 列汇总(Column 下的 SumaryItem 属性) |
21 |
||
2.13.5.9 不绑定列的使用(Column 的 UnBondType 属性) |
21 |
- 设置样式(通过 gridview 的 Format Condition 属性 ) 21
- 选择多行( OptionsSelection 下的 MultiSelect 属性) 21
- 合并单元格(列的 OptionsColumn 下的 AllowMerge 属性) 22
- 设置单元格可编辑属性(GridView 的 ShowingEditor 事件) 22
- .LayoutControl 没封装在 EF.dll 内的一个布局控件 28
3.1 如何拖放,调整大小 28
3.2 控制 Text 显示,位置,大小 29
3.3 保存布局 29
3.4 Group 上显示能控制收缩的 button 30
EF.DLL 的介绍
- EF.dll 中的 Form
结构如下:
如上图所示--常用的是 EFForm
1) 继承:父类有的,子类都会继承(如 EFFormMain 中的东西,到了 EFForm 中,原来使用 EFFormMain 的对象调用的,现在使用 EFForm 的对象都可以调用,EFFormMasterDetail 类 似)
2)简单点如下:
可认为 EFFormMain 是基类,空的,看上去什么都没有,
EFForm 为它添加了下方的 F1--F12 按钮栏,可以通过授权控制按钮是否显示. EFFormMasterDetail 是在 EFForm 上添加了一个 Panel 和一个 TabControl 控件 EFFormListDetail 是添加了一个 LayoutControl 并定义了上中下(查询条件,列表,详细)的格 局
EFFormMasterDetail2 是继承自 EFFormMasterDetail 的一个未完成的画面.定义了工具栏上按 钮的操作对应的默认实现
EFFormListDetail2 是继承自 EFFormListDetail 的一个未完成的画面.定义了工具栏上按钮 的操作对应的默认实现
一般情况下窗体都直接继承自 EFForm
- EF.DLL 内的自定义控件
添加 EF.DLL [工具箱中添加选项卡,选择工具项,浏览找到 EP 下的 EF.dll,点击确定。]
为了方便控制(一改百改),格式统一(看起来一样)建议首选 EF 下的自定义控件。 这次新增的以 EFDev 开头的:
(主要继承自 DevExpress 的控件,具体更详细的使用可参照 DevExpress 的帮助文档, 或 DevExpress 的官方网站 http://www.devexpress.com/Support/Center/) EFDevLookUpEdit 可多列显示
EFDevComboBoxEdit 下拉框(只能单列.只含显示值) EFDevSpinEdit 数量(可定义整数,或小数) EFDevButtonEdit 带按钮,可自定义按钮点击事件 EFDevCalcEdit 金额(弹出类似计算器的弹出框)
EFDevDateEdit 日期.时间.可为空
EFDevTimeEdit 时间输入框,类似 SpinEdit 带上下翻动的按钮
EFDevCheckEdit 选择框
EFDevTextEdit 文本框
EFDevMemoEdit 多行的 textEdit
EFDevRadioGroup 一组 RadioButton,可添加多项,只能选择一个. EFDevTreeList 可以以 tree 或者 grid 的形式显示数据
EFDevGrid 列表(自定义列宽,列排序,列编辑控件)
2.1 控件通用的一些属性
类似 EFDev***Edit 都有一个共同的基类,所以大多属性都是通用的. 例如:
Name 控件名称
Text 控件上的字符串
EditValue 控件的实际值(EFDev**Edit 都有此属性)
Anchor 控件锚钉(控制控件与父容器边距相对位置是否固定) Dock 控件填充(控件的某边与父容器重合)
Enable 控件是否可用
Visible 控件是否显示
ToolTip 控件提示信息(鼠标停留控件上时,显示提示信息) Cursor 鼠标在控件上方时,光标的样式
Font 控制控件上文字字体
ForeColor 字体颜色
Location 相对父容器,控件的左上角坐标位置
Size 控件当前的大小
NullText 当控件 EditValue 为 null 时,显示的值.
对于 EFDev***的控件,属性中有 Properties 。对于一些特殊的属性都在这个下面。如下图
-
EFDevTextEdit 单行文本框 *
单行的文本编辑框,(最普通,最常用的文本输入框)
简单说明: 编辑时,右键弹出菜单,包含与剪贴板相关操作(Copy,Cut,Paste 方法) ; 撤 销最后一次操作(UnDo 方法).也可自定义右键弹出菜单(Properties.ContextMenuStrip 属性 )
控制光标位置以及选择的文字(SelectionStart, SelectionLength, SelectedText, SelectAll and DeselectAll 方法);
控制最大允许输入字符长度(Properties.MaxLength 属性) 控制输入字符的大小写(Properties.CharacterCasing 属性) 控制替代字符,用作密码输入框等(Properties.PasswordChar) 格式化输入内容的显示格式(Properties.DisplayFormat 属性)
控件正编辑时的显示格式(Properties.EditFormat 属性)
控制输入内容格式( Properties.Mask 属性,该属性是用来在编辑状态下, 控制用 户输入,比如日期,数值,正则表达式等.如果 Properties.Mask.UseMaskAsDisplayFormat 设为 True 才会把 Mask 下的格式设置用作显示格式.否则只在编辑时有效)
如果是期望在窗体显示时,光标停留在某一个输入框中:
处理,文本框内的回车事件
选中文本框内所有显示文字.
控制文本框内字符大小写.
用作密码输入框.
控制最大长度.
控制输入内容.
Mask 的属性,BeepOnError 当用户输入不满足 EditMask 要求时,是否发 beep 声. EditMask 与 MaskType 配合使用,当 MaskType 是 DateTime,Numeric 时,EditMask 为指 定的相应类型.可从 MSDN 获取更详细信息,当 MaskType 是 RegEx 时,EditMask 为具体值 类似\d+(\R.\d{0,2})? 等.
-
EFDevMemoEdit 多行文本编辑框
多行的文本编辑框, EFDevTextEdit 是不支持多行编辑的,多行时,需要用这个
可能会用到的属性:是否接受回车(AcceptsReturn)是否接收 Tab 键(AcceptsTab) 是否显示滚动条(ScrollBars),输入字符最大长度(MaxLength)
属性:
-
EFDevSpinEdit 数值输入控件
数值输入框.如下.由一个 EFDevTextEdit 和一个上下翻动的按钮组成,用户可点击按钮调整 值.
简单说明: 1.只能输入数值型(整数或者小数,包含负数) 2.可控制可输入的最大值和最小值(MaxValue,MinValue) 3.控制最大长度(MaxLength) 4.控制是否可输入小数(IsFloatValue) 5.可控制点击按钮式,增加或减少的值大小(Increment 属性)
主要属性如下图所示:
可以在设计视图,属性中输入,也可以代码写,如下
-
EFDevButtonEdit 带按钮的文本框
带按钮的文本输入框,如下: 由一个 EFDevTextEdit 和若干个按钮组成(默认一个按钮)
简单说明:
1.可通过 Properties.Buttons 控制输入框后面的按钮进行增删,以及控制按钮属性
2.每个按钮的都有以下属性(如下图): 可控制按钮背景图片(通过 Image 属性) 控制单个按钮是否可用(通过 Enable 属性) 控制鼠标在按钮上时,信息提示(通过 ToolTip 属性) 控制按钮停靠方向,在左边还是右边(通过 IsLeft 属性) 控制按钮快捷键(通过 Shortcut 属性)
控制按钮类型,默认内部自定义了一些按钮类型(如 Right,Colse 等) 可控制按钮的文字(只有当 Kind 为 Glyph 时,Caption 有效.)
属性中类型,当是 Glyph 时,可以设置按钮上文字(caption 属性),其他类型为默认包含的一些带 图片的按钮. ,
对于按钮的事件,为 ButtonClick
在按钮的点击事件内部,可以通过事件参数 e 获取当前点击的按钮信息,从而做出判断,执 行不同的代码.
-
EFDevCalcEdit 带计算器的输入框
金额(弹出类似计算器的弹出框),如下
-
EFDevDateEdit 带日历选择的日期输入控件
默认样式:
带时间,分钟的.可设置 Properties 下的 EditMask 为 g,UseMaskAsDisplayFormat 为 true,如下
设置 Properties 下的 EditMask 为 yyyyMMddHHmmss,UseMaskAsDisplayFormat 为 true,如下
注:EditMask 控制输入,UseMaskAsDisplayFormat 为 true 时,该格式也用来作为显示样 式
EditFormat 编辑时样式,DisplayFormat 显示样式。
- EFDevTimeEdit 时间输入控件
- EFDevCheckEdit 选择框
包含三种状态,可为每种状态赋值,AllowGrayed 设为 true 允许第三种状态,表示不确定状态
简单说明:1.AllowGrayed 为 true 时,允许第三种状态
- Text 是显示的描述信息
3.通过 CheckStyle 控制选择框样式
4.通过 CheckState 判断当前选择状态
代码控制:
-
EFDevRadioGroup 单选框的集合控件
一组 RadioButton 的集合,可以为它上面的每一个项(RadioButton)绑定对应的值, 拖到画面时,默认什么也没有,如下图。点击 Properties 下的 Items
点击 Item 后有 RadioGroupItem 集合编辑器,如下图,添加 radioItem,
每项都有 Description,Value,Enable 属性.分别表示显示的文字,选中时值,以及是否可用
分别添加 a,b,c 对应描述为 a,b,c ,Value 值分别选 string 型的 a,b,c
Properties 下的 columns 属性,用来表示 ,设置的 Item 用多少列来显示,
-
EFSkinTabControl ,EFGroupBox, EFPanel
- EFDevLookUpEdit 可以多列下拉的选择框
一个带下拉列表的文本编辑框,拥有(lookup)自动匹配查找功能,可理解为类似一个数据
仓库(需要赋值给它的 Properties 下的 DataSource 属性),它的 EditValue 值必须在数据仓库 (DataSource)中.当用户选中列表的一条记录时, EFDevLookUpEdit 的 EditValue 是从当前行与 Properties.ValueMember 字段相匹配的值, EFDevLookUpEdit 的 Text(显示值)是与 Properties. DisplayMember 字段相匹配的值.且可通过 GetColumnValue("FieldName"); 获取选择行其他 列的值.
简单说明:
拖放一个 EFDevLookUpEdit 时,通常先修改 Properties 下的 NullText 属性为空 如果使用数据集,可以直接设置 Properties 下的 DataSource 属性为已建的数据集中某
一张表,然后就可以选择 Properties.ValueMember 和 Properties. DisplayMember 字段,并可以 点 击 Properties.Columns 会 弹 出 LookUpEdit 集 合 编 辑 器 , 添 加 列 成 员 ,Caption 为 列 标 题,FieldName 为对应的列名称.
如果不使用数据集,是在代码中为 Properties. DataSource 赋值,则不能选,输入时,注意 区分大小写.
如果希望只能选择,不能编辑可通过设置 Properties.TextEditStyle 属性控制是否可
编辑
如果希望能够处理下拉中没有的数据,可以在 ProcessNewValue 事件中,读取用户输
入的值,把新值加入到 DataSource 中.
如果希望在点击后面按钮时,取消下拉列表,可以在 QueryPopUp 事件中,通过设置 参数 e.Cancel = true; 取消弹出框
如果希望弹出框像普通 combox 一样,不显示列标题,不显示下方 footer 不显示行之 间的横线,可分别通过 Properties 下 ShowHeader, ShowFooter,ShowLines 控制
如果希望,自定义输入格式,可以通过在 CustomDisplayText 事件 为 e.DisplayText
赋值的方式,显示不同值.. 主要属性:
代码控制:
-
EFDevGrid 列表控件
EFDevGrid 可以包含多种 View [GridView 用标准的行列布局来显示数据, Card View 用一种简单的布局像卡片一样显示数据, Layout View 像卡片布局一样且支持多种布局, Banded Grid View 和 Advanced Banded Grid View 支持多行列标题的一种 gridview].常用的 是 GridView, 即用标准行列来显示数据的视图,以下的讲述都以 GridView 为例,其他 View 很多属性类似,在此不做说明.
每种 View 的字段在编辑时,默认会有一个类似 TextEdit 的文本编辑框,如果想特别控 制,可以指定列的 ColumnEdit 属性为其他控件,如 checkEdit 或者 lookupEdit 等.被选中的 控件的默认名称为 repositoryItemXXXXXX.用以区别 EFDevXXXXXX 控件.
简单说明(假设已有一个 EFDevGrid 并且新建了一个 GridView 叫 gridView1)
2.13.1 通常步骤.
如果使用数据集则先新建数据集,然后可以从菜单栏中的 :数据->显示数据源->指定表的列 表控件为 EFDevGrid (如果没有,需要点击自定义再选择,如果自定义中没有,则表示工具箱上 没添加,先添加工具项)->直接拖放到窗体上 ;;或者先拖放 EFDevGrid 到窗体设计界面,然后 指定 efDevGrid 的 DataSource 属性为数据集中某一张表 .;;最后点击 Click here to Change view->Create new View ->GridView.则所有列已添加.
如果不使用数据集,则拖放 EFDevGrid -?创建 GridView ?然后运行 Run Designer 设计 窗体,添加要绑定的列
2.13.2 获取值,设置值 常用代码。
获取 EFDevGrid 的值,如果写有类似 efDevGrid.DataSource = dt;(dt 为自定义的表),那么可 以通过类似 dt = efDevGrid.DataSource as DataTable 来获取数据源…如果使用的是数据集, 比如指定 DataSource 为 tEXT1BindSource, 为数据集中的表 text1,则对应 text1 即是数据源
当前焦点行的行号,可通过 gridView1.FocusedRowHandle 获取
// gridView1.GetFocusedDataSourceRowIndex(); 焦点行在数据源中的行号 焦点行某一列的数据 gridView1.GetFocusedRowCellValue("ID"); 焦点行的 DataRow 对象可通过 DataRow dr = gridView1.GetFocusedDataRow(); 焦点行,焦点单元格的值 object ojb= gridView1.FocusedValue; 焦点列的列对象 gridView1.FocusedColumn
根据行号,去点 DataRow 对象 gridView1.GetDataRow(rowIndex);
GridView 当前的行数 gridView1.RowCount
设置 GridView 的单元格的值 gridView1.SetRowCellValue(row, "NAME", "value") 设置 焦点行,某一列的值 gridView1.SetFocusedRowCellValue("NAME", "value") [强调下]:EFDevGrid 有 DataSource 属性, 可包含 GridView ,而 GridView 有 Columns 列 对象,列的 FiledName 对应 DataSource 中列名称时,将相应显示.(类似表 DataTable 和视图
DataView 的概念,可认为视图只是表看起来的样子)
2.13.3 对 EFDevGrid 封装的属性:
主要是 拖动行,弹出菜单,选择列,以及下方自定义按钮栏
AllowDragRow 是否允许行拖动,设为 true 时,可以拖动行调整行顺序。
ShowContextMenu 是否使用弹出菜单,设为 ture 时,使用内定的弹出菜单。 当使用弹出菜单时,默认有新增,复制新增,选择,不选,全选,全不选,导出按钮..
针对每一个按钮有该按钮的默认实现,以及是否显示,是否可用属性。
当 ShowContextMenu 设为 true 时,以下属性才有效,有关弹出菜单的。
----------------------有关弹出菜单的--------------------------------------------------------------
ContextMenuAddCopyNewEnable 弹出菜单中[复制新增],是否可用。 ContextMenuAddNewEnable 弹出菜单中[新增],是否可用。 ContextMenuChooseAllEnable 弹 出 菜 单 中 [ 选 择 所 有 ] , 是 否 可 用 。 ContextMenuChooseEnable 弹出菜单中[选择],是否可用。 ContextMenuSaveAsEnable 弹 出 菜 单 中 [ 另 存 为 ] , 是 否 可 用 。 ContextMenuUnChooseAllEnable 弹出菜单中[全部不选],是否可用。 ContextMenuUnChooseEnable 弹出菜单中[不选择],是否可用。 ShowContextMenuAddCopyNew 弹出菜单中[复制新增],是否显示 ShowContextMenuAddNew 弹出菜单中[新增],是否显示 ShowContextMenuChoose 弹出菜单中[选择],是否显示 ShowContextMenuChooseAll 弹出菜单中[选择所有],是否显示 ShowContextMenuSaveAs 弹出菜单中[另存为],是否显示 ShowContextMenuUnChoose 弹出菜单中[不选择],是否显示 ShowContextMenuUnChooseAll 弹出菜单中[全部不选],是否显示
---------------------------------------------------------------------------------------------------------
IsUseCustomPageBar 是否使用下方自定义按钮. 设为 true 时,使用自定义按钮 当使用自定义按钮时,自定义的按钮包括(翻页的四个按钮,新增,复制新增,删除,
导出,显示行过滤,显示分组,刷新,保存配置 ,跳转到按钮.以及分页信息显示框..都有 对应的默认实现,以及是否可用,是否可见属性。如下
--------------------------有关 EFDevGrid 下方自定义按钮的-------------------------------
FirstPageButtonEnable 第一页是否可用
LastPageButtonEnable 最后一页是否可用
NextPageButtonEnable 下一页是否可用
PrePageButtonEnable 上一页是否可用 ShowAddCopyRowButton 是否显示复制新增一行按钮 ShowAddRowButton 是否显示新增一行按钮 ShowDeleteRowButton 是否显示删除一行按钮 ShowExportButton 是否显示导出按钮
ShowFilterButton 是否显示过滤行按钮
ShowGroupButton 是否显示按列分组按钮
ShowPageButton 是否显示翻页按钮
ShowPageToButton 是否显示跳转到按钮 ShowRecordCountMessage 是否显示记录条数信息按钮 ShowRefreshButton 是否显示刷新按钮 ShowSaveLayoutButton 是否显示保存布局按钮 CanConfigGridCaption 是否可以配置列标题
如果要自定义按钮点击事件,可以在 EFDevGrid 的事件中找到相应事件,双击事件重 写事件实现,将不调用默认实现。
---------------------------------------------------------------------------------------------------------
ShowSelectedColumn 是否显示选择列,设为 true 时,会增加一个选择列。
TotalRecordCount 总记录数
PageSize 每页记录数
RecordCountMessage 分页信息
InitRowOrdinal 起始行标(在 gridview1 前方默认有行标号,默认从 1 开始,当 修改该值时,将从该值开始)
2.13.4 封装的一些事件
Grid 分页条事件
分页条中复制新增按钮点击事件 EF_GridBar_AddCopyRow_Event
分页条中新增按钮点击事件 EF_GridBar_AddRow_Event
分页条中第一条点击事件 EF_GridBar_Fisrt_Event
分页条中最后一条点击事件 EF_GridBar_Last_Event
分页条中下一页点击事件 EF_GridBar_NextPage_Event
分页条中删除一行点击事件 EF_GridBar_PageTo_Event
分页条中上一页点击事件 EF_GridBar_PrePage_Event
分页条中刷新点击事件 EF_GridBar_Refresh_Event
分页条中删除一行点击事件 EF_GridBar_Remove_Event
分页条中保存布局按钮点击事件 EF_GridBar_SaveLayout_Event
2.13.4 封装的一些方法
public bool GetSelectedColumnChecked(int row); //获取 row 行是否被选中
public void SetSelectedColumnChecked(int row, bool check); //设置 row 行为 check public DataTable GetSelectedDataRow(); //获取所有选中行的数据
public void LoadLayout(); //加载布局
public void LoadLayout(EFDevGrid.ConfigEnum ConfigModule);
public void LoadLayout(EFDevGrid.ConfigEnum ConfigModule, string moduleName, string className);
public void SaveLayout(); //保存布局
public void SaveLayout(EFDevGrid.ConfigEnum ConfigModule);
public void SaveLayout(EFDevGrid.ConfigEnum ConfigModule, string moduleName, string className);
public void SetAllColumnEditAble(bool editAble); //设置所有列的可编辑属性为 editAble
public DataSet GetGridValue(); //获取数据源
public void SetGridValue(EIInfo inblk); //设置 Grid 的值 除去封装的一些属性方法,是封装在 EFDevGrid 内,实际上操作的大都是真对 GridView. 获取行
2.13.5 其他一些会用到的属性
2.13.5.1 列冻结(Fixed 属性)
通过 gridView 下 Columns 中列 的 Fixed 属性(默认是 none,可改为 Leftt 左停靠或 Righ
右停靠)
- 行变色(GridView 的 RowStyle 事件)
通同 gridview 的 RowStyle 事件,在事件中给事件参数 e.Appearance 赋值就对应行的样 式,如果想对特定行设置不同样式,则只需加上不同的判断即可
通过 e.RowHandle 获取当前行.从而能够获取数据源中对应的行,进而做不同判断.
- 单元格变色(GridView 的 RowCellStyle 事件)
与行变色类似,通过 gridview 的 RowCellStyle 事件,在事件中给事件参数 e.Appearance 赋值就对应单元格的样式,如果想对特定单元格设置不同样式,则只需加上不同的判断即可 在 事 件 中 还 可 通 过 e.CellValue 获 取 单 元 格 的 值 , 通 过 e.Column 获 取 列 , 通 过
e.RowHandle 获取当前行.
- 列控件(列的 ColumnEdit 属性)
通过 gridView 下 Columns 中列的 ColumnEdit 属性,从而设置列的控件..(可选的控件和 之前直接拖放的控件一一对应,如 EFDevTextEdit 对应 TextEdit ; EFDevButtonEdit 对应 ButtonEdit ; EFDevCheckEdit 对应 CheckEdit; EFDevLookUpEdit 对应 LookUpEdit 等).当任选 一个后,默认命名为 repositoryItemXXXXXX...它的属性与 EFDevXXXXXX 的 properties 下 的属性对应.
- 一列用不同控件(GridView 的 CustomRowCellEdit 事件)
通过指定参数 e. RepositoryItem 从而设置单元格编辑时使用的控件,假设定义了一个方 法 getRepositoryByName(string strName) 能够根据不同名称返回不同的 RepositoryItem 对象 则 可 以 结 合 类 似 (e.Column 当 前 列 , e.RowHandle 当 前 行 , gridView1.GetRowCellValue(e.RowHandle, e.Column) 等做一些业务逻辑判断,而定义不同 的控件,从而能够达到,同一列,显示不同的控件
RepositoryItem item = getRepositoryByName(strFieldName); e.RepositoryItem = item;
- 单元格验证 (GirdView 的 ValidatingEditor 事件)
在事件里面,可通过 e.ErrorText 控制所显示的错误信息,当 e.Valid = false;会显示错误 信息.
同时可通过 e.Value 获取单元格内的值,配合类似焦点行等,进行业务逻辑判断
- 保存配置 (通过封装的 SaveLayout 和 LoadLayout 方法)
EFDevGrid 在运行时,可对已有的列进行隐藏,调整列宽,调整位置等操作,然后可 以点击按钮保存该设置,下次加载这个 EFDevGrid 时读取保存的设置,从而显示上次的设 置.
a)如果一个画面内的 EFDevGrid 只有一种配置,则编程人员只需把下方的保存配置按钮显示 出来,设置为可用,默认实现了保存配置,然后在窗体加载时通过 EFDevGrid 对象的 LoadLayout();调用配置
b)如果一个画面内的 EFDevGrid 对应多种配置.(比如需要根据不同条件显示不同配置) 则需 要自定义保存配置事件 EF_GridBar_SaveLayout_Event 在事件内通过调用 EFDevGrid 的 SaveLayout(EFDevGrid.ConfigEnum ConfigModule, string moduleName, string className); 方法保存配置,相应的在加载时调用
LoadLayout(EFDevGrid.ConfigEnum ConfigModule, string moduleName, string className); 方法加载配置,其中参数 1 ConfigModule 枚举也即保存为项目级还是用户级配置,参数 2 指所在模块的模块名(2 位的一级模块名称)参数 3 是自定义的用来区分不同配置的字段..
- 列汇总(Column 下的 SumaryItem 属性)
对于 GridView 可在下方显示一行用来显示汇总信息(GridView 的 OptionsView 下的
ShowFooter 设为 True 时会显示,默认为 false)。
对于 GridView 的列 Column properties 的属性下有 SumaryItem 属性 包括显示格式 (DisplayFormat),汇总字段(FieldName) 汇总类型(SummaryType) Tag(Tag 备用,可用来存储 一些而外信息)..其中汇总类型包括 Sum,Min ,Max,Count,Average,Custom,None .. 默认是 None,如果需要的汇总并不是简单对 GridView 上各行的求和,最大,最小,平均, 个数 即不满足要求需要自定义汇总事件时,需要选择 Custom,然后定义 GridView 的 CustomSummaryCalculate 事件.再改事件中进行自定义汇总.
如果要修改汇总字体或背景色等外观属性,可以修改 GridView 中 Appearances 下面的
FooterPanel 的对应的属性.
- 不绑定列的使用(Column 的 UnBondType 属性)
之前提过,GridView 用来显示的,所以需要为 EFDevGrid 指定一个数据源,然后 GridView 的列 Column 有 FieldName 属性,会显示对应的字段,并把编辑的内容提交到数据源中,这 种列称为绑定列.
另一种是不绑定列,也即该列在数据源中并没有,但仍想显示并可维护.也即列 Column 的 UnBondType 不是 Bond 则就是不绑定列,不绑定列通过 UnBondType 指定列类型[对于 绑定列的列类型 是取 数据源中相应列的列类型].
不绑定列的数据:(a)自动根据某些条件填充,比如同一列某些列的运算结果.可以设置 UnboundExpression 点击该属性后面的按钮,会有表达式编辑器窗体,可自定义表达式,表 达式的结构将显示为该列数据
(b)可自定义 GridView 的 CustomUnboundColumnData 事件,该事件用 来为不绑定列设置或者获取值.通过 eColumn 判断是哪一列, e.IsGetData ,e.IsSetData 判 断是设置值还是获取值,设置值时,为 e.Value 赋值,该值将显示在相应位置,获取值时, 可读取 e.Value 也即单元格内的值.
- 设置样式(通过 gridview 的 Format Condition 属性 )
通过 gridview 的 Format Condition.,可添加一些条件(Condition Item).在该条件的属性 中,设置条件内容(Properties),满足条件的样式(Appearance)..则在 GridView 内,对于 Column 定义的列,如果满足 Condition, Expression,Value1,Value2 定义的条件,将 ApplyToRow(对 整行还是只对单元格)显示为 Apprearance 定义的样式.
- 选择多行( OptionsSelection 下的 MultiSelect 属性)
gridView 的 OptionsSelection 下的 MultiSelect 设为 true (默认是 false 单选) MultiSelectMode 是指选择行还是单元格(默认为 RowSelect)
- 合并单元格(列的 OptionsColumn 下的 AllowMerge 属性)
GridView 的 AllowCellMerge 设为 true 时,列属性中的设置才有效 同一列中相邻的行如果值相同则合并..默认不支持同一行不同列的合并.
- 设置单元格可编辑属性(GridView 的 ShowingEditor 事 件)
在 GridView 的 ShowingEditor 事件中,可通过 FocusedColumn 当前焦点列,以及焦点行数 据 GetFocusedDataRow()或者其他属性做逻辑判断,通过设置事件参数 e.Cancel = false; 设置 单元格的可编辑性,如果 e.Cancel = true;则不会显示单元格编辑器,则不可编辑
或者可通过类似焦点行,或焦点列改变等事件,通过设置列的可编辑性,达到设置当前焦点 单元格的可编辑性.
截图补充说明:
Ps:点击 Create new view 创建新的视图,常用的是 GridView 列表形式的视图
PS:指定 DataSource 为数据集中的某一张表
PS:EFDevGrid 设置窗体介绍:
PS:对于整个 GridView 的属性控制.
如行为的在 OptionsBehavior 下(类似新增行,删除行,是否可编辑等) 视图的在 OptionsView 下面(如列标题,列宽,footer, 汇总栏,过滤行等)
自定义配置时的具体控制 在 OptionsCustomization(如行拖动,排序,过滤等)
控制选择项的在 OptionsSelection(单选,多选,等)
PS:GridView 视图控制
PS:当数据集改动时,通过 Retrieve Fields 重新从数据源加载列
PS 设置列编辑控件:
PS: 列绑定的字段,列标题,以及列汇总属性
PS:分组汇总(当拖放某一列到上方分组栏时,下方的汇总)
PS:Style Format Conditons 设置满足条件的单元格样式
PS:EFDevGrid 封装的属性,按分类排序.
PS:弹出菜单相关属性.主要值是否显示(Show)以及是否可用(Enable)
PS:分页条相关属性(CanConfigGridCaption 是指在保持配置时,是否允许配置列标题)
PS:EFDevGrid 封装的事件,主要指下方分页条上按钮的对应事件(EF_GridBar_***)
- LayoutControl 没封装在 EF.dll 内的一个布局控件
没有封装在 EF.dll 内,需要单独添加,按照在工具箱中添加 EF.DLL 的方法,在工具箱右击 选 择 项 === 浏 览 选 择 EP 目 录 下 的 DevExpress.XtraLayout.v9.2.dll== 确 定 . 即 可 看 到 LayouControl 控件
当拖放一个 LayoutControl 到窗体时,默认就有了一个 layoutControlGroup1.\\
LayoutControl 包含以下‘元素‘:
TabbedControlGroup... LayoutControlGroup.....LayoutControlItem ( Text 和 Control )
--
3.1 如何拖放,调整大小
如果要调整最外层,LayoutControl 的大小,需要选中 layouControl 控件,然后拖放,不好选, 可以从属性中找到 layoutControl.
如果要调整内部项(LayouControlItem 的大小,需要选中该项前面的 Text 部分,然后调整大 小,一些控件(如 CheckBox,Button 等,拖上去时,默认 text 隐藏了,要改变大小,先把 Text 显示出来,再修改大小).
3.2 控制 Text 显示,位置,大小
3.3 保存布局
在自定义布局中介绍过.此控件自带有保存布局,和加载布局的方法.为
但为了统一,特作了辅助类,在自定
义布局中有介绍,此处略