列表开发框架
第一部分:UIModel建立过程
1命名规范
1.1解决方案命名
查询命名:服务组+BListUI
举例:
查询类: 当前服务组是Base,那么解决方案的名称就为BaseBListUI.ubfsln。
1.2项目命名
查询命名:业务名称+ BListUI(一般情况下要与对应的卡片名称一致)
举例:
组织档案项目命名为OrgBListUI
1.3项目装配件名
查询命名: UFIDA.U9.具体的服务组.业务名称.具体名称+BListUI
(与相应的单据和档案的UI保持一致。在他们的基础上加上BList来区分。)
举例:
组织档案项目装配件名为UFIDA.U9.Base.OrgBListUI
1.4模型命名空间
查询命名:
UFIDA.U9.具体的服务组.业务名称.具体名称+BListUIModel,
即:项目装配件名+Model
举例:
组织档案的模型命名空间为UFIDA.U9.Base.BListUIModel
1.5 UIModel的命名
查询命名:
业务名称+ BListUIModel
举例:
组织档案的模型命名为OrgBListUIModel
1.6 Form的命名
查询命名:
业务名称+ BListUIForm
举例:
组织档案的Form命名为OrgBListUIForm
2 操作过程
2.1 建立节点并且按规范命名
步骤1:点击 项目解决方案,选择根节点 右键“新建”,切换到分析项目组页签,点击“查询 项目”,
录入查询项目名称,以*Qry结尾,点击 “确定”
步骤2:查询项目配套生成一个BP和一个UI项目,UI项目以ListUI结尾,BP项目以ListBP结尾,路径与其它模型项目保持一致即可。
步骤3:查询方式选择”列表”(不要选错,另外两个参见1.4.3.6小节),录入UI模型名称(此步骤为查询项目初始化时,默认生成的查询定义及界面模型,可以不用或删除)
2.2 规范装配件名
步骤1:在模型视图页签中选中对应的节点,再选择属性页签,按照命名规范更改配件名
例如:组织档案的配件名为UFIDA.U9.Base.OrgBListUI
ListBP及Qry项目配件名也要做相关修改,以保持一致
2.3 创建列表页面
(1)创建查询定义
选中查询项目,右键新建查询定义,录入名称,以*Qry结尾
查询方式选择”列表”(不要选错,另外两个参见1.4.3.6小节),录入UI模型名称
设置数据来源,及查询方案,增加默认条件,栏位,及排序信息
(2)命名空间修改
上面步骤完成之后下面要按照规范更改模型的名空间及界面自适应
步骤1:打开ListUI项目,在模型界面上双击第一行弹出窗口“界面模型设计器”,将模型命名空间按命名规范更改正确。
例如:组织档案列表的模型名空间为UFIDA.U9.Base.OrgBListUIModel(注意UBF默认生成的名称和显示名称都会缺少Model);
步骤2:打开ListUI项目,在表单界面上左侧窗口找到界面控件树,选中根节点,再点击右侧属性,修改是否自适应为True
第二部分:Code建立过程
1生成代码
在解决方案窗口中,选中所建的项目,
- 确保UBF必须包含模板./UITpls/UICommonAction.tpl
- 点击鼠标右键,点击构造。
2项目引用
查询和列表的公共的引用目前有如下几个:
(1)using UFIDA.UBF.Query.CaseModel;
(2)using UFIDA.UBF.Query.CommonService;
(3)using UFSoft.UBF.ExportService;
(4)using UFIDA.U9.UI.PDHelper;
3 Action部分
下面我们要做的工作就是修改 *BListUIModelActionExtend.cs,
3.1 创建模型的相应代码
(0)引用
using UFSoft.UBF.UI.ControlModel;
using UFIDA.UBF.Query.CaseModel;
using UFIDA.UBF.Query.CommonService;
using UFIDA.U9.UI.PDHelper;
using UFSoft.UBF.Util.Context;
using UFIDA.UBF.Query.CommonService.QueryStrategy;
using UFSoft.UBF.ExportService;
(1)全局变量设置
string QryModelID = "5f9c19ac-2ca4-4ee6-966e-8891922dd0c4";//当前UIModelID
string EntityFullName = "UFIDA.U9.Base.Organization.Organization";//RootEntity的FullName
string CardPageID = "CBO.Base.Organization.Organization";//新增及修改时的卡片的WebPart的FullName
(2)OnLookCase查询按钮
不用写任何代码。---因为模版已经自动生成代码。
(3)GridRowDbClick_Extend
(4)OnPrint_Extend
以上代码为默认生成的代码,按默认方式进行打印
(5)OnOutPut_Extend
以上代码为默认生成的代码,按默认方式进行导出
(6)OnCaseChanged事件代码:
private void OnCaseChanged_Extend(object sender, UIActionEventArgs e)
{
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.OnCaseChanged_DefaultImpl(sender,e) ;
//加载选中方案
QryService.OnCaseChangedDefault("DDLCase", this.CurrentPart);
QueryAdjust();
}
(7)OnNew_Extend
(8)"margin-left:21.0pt;">下面开始修改*BQryUIFormWebPartCodeBehindExtend.cs。
4.1 After"text-align:center;">
查询列表公共模型是U9查询用于存储已选、待选以及其他一些查询相关信息的数据结构。在查询的过程中,它的主要作用是为了查询过程数据的全局共享和不同模型数据之间的转化介质。模型中包括如下的具体的数据结构:
1 CaseModel数据结构
名称 | 描述 | 数据类型 | 备注 |
AppID | 应用ID | Long type | 当前应用ID,主要用于变量解析的XML文件读写 |
QryModelID | 当前所建的模型ID | Guid Type | 辨别不同的查询的关键信息 |
CaseDefine | 待选信息 | CaseDefine Type | 待选信息,包括列,排序,分组,条件,参照集合,枚举的结合 |
Case | 已选信息 | Case Type | 已选列,分组,条件,排序 |
实例化一个CaseModel的方法:
CaseModel caseModel=new CaseModel();
CaseModel中还提供了一些很简单的方法,满足不同代码风格的书写,如下:
caseModel.SetApplicationID(1234566);
CaseModel.AddCase(Case ~);
CaseModel.AddDefine(CaseDefine~);
2 CaseDefine数据结构
名称 | 描述 | 数据类型 | 备注 |
ColumnDefines | 待选栏目项 | ColumnDefines | 栏目的集合 |
SortDefines | 待选排序项 | SortDefines | 排序的集合 |
GroupDefines | 待选分组项 | GroupDefines | 分组的集合 |
FilterDefines | 待选条件项 | FilterDefines | 引用于UFSoft.UBF.Report.Filter.FilterModel,用于条件项的存取 |
References | 相关参照集合 | References
| |
Enumerates | 相关枚举集合 | Enumerates |
2.1 ColumnDefines& ColumnDefine
ColumnDefines从字面上我们可以看出是ColumnDefine的集合形式,它继承与List类型,具有集合的一般方法,这里就不对其具体阐述了。简单介绍一下外加的方法:
ColumnDefine GetObjectByAttributeID(Guid attributeid) ///通过AttributeID获取一个ColumnDefine实例
ColumnDefine GetObjectByid(long ID) ///通过ID获取一个ColumnDefine实例,不建议使用
ColumnDefine GetObjectByItem(string item) ///通过Item属性lumnDefine实例
ColumnDefine的数据结构:
基类为[BaseDefine]
名称 | 描述 | 数据类型 | 备注 |
ID | 项ID | long | 建议不用这个字段,为程序附与的无用属性 |
A ttributeID | 项属性ID | Guid | 元数据属性ID的GUID形式 |
Item | 项名称 | string | |
DispalyName | 项显示名称 | string | |
DataType | 项类型 | string | 建议不用在进行直接类型读取,这是U9元数据类型,不能直接的Type.GetType(Item.DataType)方法的使用 |
SubColumns | 项子项集合 | Items | 此属性为空或者Count为0;程序未对其进行赋值操作 |
ParentColumn | 项父项 | Item | |
AttributeType | 项数据 | AttributeType Enum | |
ItemAttribute | 项属性 | String | |
EntityFullName | 项实体全名 | String | |
DataTypeID | 项数据类型ID | GUID | 项类型对应的类型元数据ID |
ReferenceGuid | 项参照ID | Guid | 如果项为实体类型[EntityType]或者参照类型[ReferenceType],这程序会检索此项,去遍历参照集合获取相应的参照 |
实例化一个ColumnDefine:
ColumnDefine columnDefine=new ColumnDefine();
由于SortDefine,GroupDefine与ColumnDefine的相似性,这里就不一一讲述了.
2.2 参照集合&&参照[Reference]
参照的数据结构:
名称 | 描述 | 数据类型 | 备注 |
ID | ID | Guid | |
CodeField | 参照Code列信息 | String | Code列 |
NameField | 参照Name列信息 | String | Name列 |
EntityID | 实体ID | Guid | 参照相应的实体ID |
实例化一个参照:
Reference reference=new Reference();这个方法组要用在用户想获取的参照不是默认参照时,进行用户的自定义。
参照集合与其他的集合一样继承与List,这里也提供了一些获取参照的小方法,如下:
Reference GetReferenceByGuid(Guid entityGuid)///通过实体ID获取参照
Reference GetReferenceByeID(Guid refID)///通过参照ID获取参照
示例代码:
Reference tempReference = Enumerate GetReferenceByeID (123434343-434343-34343-3434);
If(tempReference!=null)
{
myReference = tempReference;
}
2.3 枚举、枚举项与枚举集[Enumerate]
- 枚举
枚举类型用于存储U9枚举信息,它的数据机构如下:
名称 | 描述 | 数据类型 | 备注 |
ID | ID | Guid | |
EnumItems | 子项集合 | EnumItems | |
EntityID | 实体ID | Guid | 参照相应的实体ID |
它同时提供了
Enumerate.AddItem(EnumItem Item);
Enumerate.RemoveItem(EnumItem Item);
对子项进行适当的调整。
- 枚举项
名称 | 描述 | 数据类型 | 备注 |
Name | 项名称 | String | |
DisplayName | 显示名称 | String | |
Description | 描述信息 | String | |
DefaultValue | 默认值 | Int |
- 枚举集
枚举集合与其他集合一样继承于的List类型,并增加了几个小方法编写程序元编写代码:
Enumerate GetEnumerateByGuid (Guid entityGuid) 通过实体的id来获取枚举实例
示例代码:
Enumerate tempEnumerate= Enumerate GetEnumerateByGuid (12343433-434343-34343-3434);
If(tempEnumerate!=null)
{
myEnumerate= tempEnumerate;
}
3 Case数据结构
名称 | 描述 | 数据类型 | 备注 |
CaseBasicInfo | 方案基本信息 | CaseBasicInfo | |
Columns | 已选栏目项 | Columns | 栏目的集合 |
Sorts | 已选排序项 | Sorts | 排序的集合 |
Groups | 已选分组项 | Groups | 分组的集合 |
FilterDefines | 已选条件项 | FilterDefines | 引用于UFSoft.UBF.Report.Filter.FilterModel,用于条件项的存取 |
FilterValues | 已选条件值 | FilterValues | 引用于UFSoft.UBF.Report.Filter.FilterModel,用于条件值的存取 |
3.1 CaseBasicInfo
名称 | 描述 | 数据类型 | 备注 |
ModelID | 当前UIModelID | Guid | |
UserID | 当前用户ID | Long | |
CaseType | CaseType | 当前的Case的类别 | |
ID | ID | Long | |
Title | 标题 | String | |
Description | 描述 | String | |
OrganizationID | 当前组织ID | Long |
3.2 Columns
在Columns与ColumnsDefines也很相似,这里也不再做更多的介绍了.
3.3 Groups
在Groups与Groups Defines也很相似,这里也不再做更多的介绍了.
3.4 Sorts
在Sorts与Sorts Defines也很相似,这里也不再做更多的介绍了.
3.5 FilterDefines
引用于UFSoft.UBF.Report.Filter.FilterModel,用于条件项的存取
3.6 FilterValues
引用于UFSoft.UBF.Report.Filter.FilterModel,用于条件值的存取
列表开发框架
本文2024-08-20 18:41:46发表“u9cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/yonyou-u9cloud-1193.html