XAF ORMDataModel构建的基础资料对象无法被调用显示的解决办法
修正,其实只要在基础资料类中加入[XafDefaultProperty("名称")]标签即可。
- namespace NEO.ERP.Module.BusinessObjects.Business
- {
- //引用显示名称
- [XafDefaultProperty("名称")]
- public partial class 公共基础资料基类
- {
- public 公共基础资料基类(Session session) : base(session) { }
- public override void AfterConstruction()
- {
- base.AfterConstruction();
- }
- }
- }
下面的是老的引用方法。
在Module项目中如果手工增加的XPO Business Object类,增加了[XafDefaultProperty("名称")]属性后,该对象被别的类调用就可以显示一个下拉列表。
- using System;
- using System.Linq;
- using System.Text;
- using DevExpress.Xpo;
- using DevExpress.ExpressApp;
- using System.ComponentModel;
- using DevExpress.ExpressApp.DC;
- using DevExpress.Data.Filtering;
- using DevExpress.Persistent.Base;
- using System.Collections.Generic;
- using DevExpress.ExpressApp.Model;
- using DevExpress.Persistent.BaseImpl;
- using DevExpress.Persistent.Validation;
- namespace HelloXAF.Module.BusinessObjects
- {
- [DefaultClassOptions]
- //[ImageName("BO_Contact")]
- [XafDefaultProperty("名称")]
- //[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]
- //[Persistent("DatabaseTableName")]
- // Specify more UI options using a declarative approach (https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument112701).
- public class AAA : BaseObject
- { // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).
- public AAA(Session session)
- : base(session)
- {
- }
- public override void AfterConstruction()
- {
- base.AfterConstruction();
- // Place your initialization code here (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112834.aspx).
- }
- //private string _PersistentProperty;
- //[XafDisplayName("My display name"), ToolTip("My hint message")]
- //[ModelDefault("EditMask", "(000)-00"), Index(0), VisibleInListView(false)]
- //[Persistent("DatabaseColumnName"), RuleRequiredField(DefaultContexts.Save)]
- //public string PersistentProperty {
- // get { return _PersistentProperty; }
- // set { SetPropertyValue("PersistentProperty", ref _PersistentProperty, value); }
- //}
- //[Action(Caption = "My UI Action", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = true)]
- //public void ActionMethod() {
- // // Trigger a custom business logic for the current record in the UI (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112619.aspx).
- // this.PersistentProperty = "Paid";
- //}
- public string 名称 { get; set; }
- }
- }
AAA 列表显示
汇率体系调用AAA时显示如下。
但是,当我们不是通过代码建BO对象时,而是通过ORMDataModel设计器来创建BO对象的时候。设计器创建的BO对象不是像手工建的BO像,设计器创建的对象不是派生于BaseObject,而是派生于XPObject。当我们给基础资料对象赋[XafDefaultProperty("Code")]属性的时候,发现引用该基础资料的下拉列表显示不出来Code或者Name。
网上搜索找到一篇文章。
https://www.devexpress.com/Support/Center/Question/Details/Q306912
原意是 Only the BaseObject class overrides the ToString method, to process the XafDefaultPropertyAttribute.
需要自己手工再处理Tostring()
找到需要被调用的基础资料类,
- using System;
- using DevExpress.Xpo;
- using DevExpress.Data.Filtering;
- using System.Collections.Generic;
- using System.ComponentModel;
- using DevExpress.Persistent.Base;
- using DevExpress.ExpressApp.DC;
- using DevExpress.ExpressApp;
- namespace HelloXAF.Module.BusinessObjects.ORMDataModel_Base
- {
- [DefaultClassOptions]
- [XafDefaultProperty("编码")]
- public partial class 币别
- {
- public 币别(Session session) : base(session) { }
- public override void AfterConstruction() { base.AfterConstruction(); }
- public override string ToString()
- {
- //if (!isDefaultPropertyAttributeInit)
- //{
- string defaultPropertyName = string.Empty;
- XafDefaultPropertyAttribute xafDefaultPropertyAttribute = XafTypesInfo.Instance.FindTypeInfo(GetType()).FindAttribute<XafDefaultPropertyAttribute>();
- if (xafDefaultPropertyAttribute != null)
- {
- defaultPropertyName = xafDefaultPropertyAttribute.Name;
- }
- else
- {
- DefaultPropertyAttribute defaultPropertyAttribute = XafTypesInfo.Instance.FindTypeInfo(GetType()).FindAttribute<DefaultPropertyAttribute>();
- if (defaultPropertyAttribute != null)
- {
- defaultPropertyName = defaultPropertyAttribute.Name;
- }
- }
- if (!string.IsNullOrEmpty(defaultPropertyName))
- {
- var defaultPropertyMemberInfo = ClassInfo.FindMember(defaultPropertyName);
- object obj = defaultPropertyMemberInfo.GetValue(this);
- if (obj != null)
- {
- return obj.ToString();
- }
- }
- //isDefaultPropertyAttributeInit = true;
- //}
- //if (defaultPropertyMemberInfo != null)
- //{
- // object obj = defaultPropertyMemberInfo.GetValue(this);
- // if (obj != null)
- // {
- // return obj.ToString();
- // }
- //}
- return base.ToString();
- }
- }
- }
这样,设计器添加的基础资料也能显示出来了。
XAF ORMDataModel构建的基础资料对象无法被调用显示的解决办法的更多相关文章
- 使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
如果你使用NDK r10构建Cocos2d-x v3.2,将会遇到所有测试用例编译错误以及Lua测试用例链接错误. 1. 编译错误 错误信息是: 1 2 3 4 5 6 7 8 /Users/ming ...
- Post数据到 https异常:基础连接已经关闭: 连接被意外关闭 解决办法
POST数据到HTTPS站点的时候需要设置ServicePointManager类的ServerCertificateValidationCallback属性,并且在POST到https://pass ...
- vue双向数据绑定对于数组和新增对象属性不能监听的解决办法
出现数组不能按照索引进行跟新的原因是处于性能考虑的,但是整体数组的增加删除是可以监听到的:对于对象新增属性不能监听是因为没有在生成vue实例时候放进watcher收集依赖. 首先我们先来了解vue数据 ...
- IntelliJ IDEA的jsp中内置对象方法无法被解析的解决办法
主要原因是因为缺乏依赖 可以通过添加依赖的方式 导入servlet-api.jar,jsp-api.jar,tomcat-api.jar 这三个jar即可 这三个jar在tomcat的lib目录下有 ...
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. ...
- 构建最基础的Spring项目及所需要的jar包
1.Spring 框架由6个模块组成 上图是spring4的结构图,不同版本结构略有差异,但模块都是相同的. 2.Core Container 核心容器 容器是Spring的核心部分,Core Con ...
- 【Gradle】Gradle构建脚本基础
Gradle构建脚本基础 Settings文件 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认名为settings.gradle,放在根工程目录下. 设置文件大多数的 ...
- K3已被禁用的基础资料如何显示出来
[基础资料]——[公共资料]——[物料.职员.客户==]——[查看]——[选项]——显示禁用基础资料——确定,就可以看见你所禁用过的基础资料,显示为红色字体! 同类问题example: 金蝶K3 禁用 ...
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
随机推荐
- 对于现代开发来说,JavaScript就是一种垃圾语言(转)
伯乐在线导读:昨天 Reddit/Programming 频道的头条热帖是一篇来自 julik live 博主的技术吐槽文,最初的英文标题是"For modern development J ...
- MobileSubstrate
[MobileSubstrate] Cydia Substrate (formerly called MobileSubstrate) is the de facto framework that a ...
- idea maven项目依赖项有红色波浪线
在maven面板选中所有报错的maven项目,右键选择移除(remove),之后重新添加.
- css四可见,部分可见和重叠半透明
<html> <head> <title>javascript</title> <style type="text/css"& ...
- Docker 学习笔记_安装和使用MongoDB
一.准备 1.宿主机OS:Win10 64 2.虚拟机OS:Ubuntu18.04 3.账号:docker 二.安装 1.搜索MongoDB镜像 ...
- 安装sql server 2008重启失败
sql server2008安装时提示重启计算机失败怎么办 安装SQL Server 2008时,经常会遇到这样一个问题,软件提示“重启计算机失败”,如果忽略的话,会给后面的安装带来很大的麻烦,这 ...
- Requests接口测试(四)
Python序列化和反序列化 啥是序列化?啥是反序列化?这两个词听起来优点高大上的意思,其实呢不然,很简单的可以理解为: 序列化:将python的数据对象编码转换为json格式的字符串 反序列化:将j ...
- Selenium家谱
自动化测试一词也算是整个测试行业里面比较热门的一个词儿,工资高,前景好,有实力,有态度等等,很多企业的管理者也在不断的扩大自己的队伍和职能,这也是导致自动化测试比较流行的原因之一.但是很多企业做自动化 ...
- OpenGL绘图框架(GLFW)
下载地址:http://www.glfw.org/download.html
- Terminologies in MVC: Part 2 (Razor Engine Syntax vs Web Form)
By Abhishek Jaiswal :) on Mar 21, 2015 In this article we learn about Razor Engine Syntax vs Web For ...