【翻译】eXpressAppFramework QuickStart 业务模型设计(四)—— 实现自定义业务类...

这一讲,你将学到如何从头开始实现业务类。为此,将要实现Department和Position业务类。这些类将被应用到之前实现的Contact类中。你将学到引用对象自动生成用户界面的基本要素。

在此之前,我建议你去阅读一下 【翻译】eXpressAppFramework QuickStart 业务模型设计(二)—— 从业务类库中继承

·  在MySolution.Module中添加如下类:

ContractedBlock.gifExpandedBlockStart.gifCode
 1 [DefaultClassOptions]
 2 [System.ComponentModel.DefaultProperty("Title")]
 3 public class Department : BaseObject {
 4     private string title;
 5     private string office;
 6     public Department(Session session) : base(session) { }
 7     public string Title {
 8         get { return title; }
 9         set { SetPropertyValue("Title"ref title, value); }
10     }
11    public string Office {
12       get { return office; }
13       set { SetPropertyValue("Office"ref office, value); }
14    }
15 }
16 
17 

添加Department属性到Contact类,代码如下:

ContractedBlock.gifExpandedBlockStart.gifCode
 1 [DefaultClassOptions]
 2 public class Contact : Person {
 3    //
 4    private Department department;
 5    public Department Department {
 6       get {return department;}
 7       set {SetPropertyValue("Department"ref department, value);}
 8    }
 9    //
10 }
11 
12 

 ·  类似的,实现Position类

ContractedBlock.gifExpandedBlockStart.gifCode
 1 [DefaultClassOptions]
 2 [System.ComponentModel.DefaultProperty("Title")]
 3 public class Position : BaseObject {
 4    public Position(Session session) : base(session) { }
 5    private string title;
 6    public string Title {
 7       get { return title; }
 8       set { SetPropertyValue("Title"ref title, value); }
 9    }
10 }
11 
12 

添加Position属性到Contact类中

ContractedBlock.gifExpandedBlockStart.gifCode
 1 [DefaultClassOptions]
 2 public class Contact : Person {
 3    //
 4    private Position position;
 5    public Position Position {
 6       get {return position;}
 7       set {SetPropertyValue("Position"ref position, value);}
 8    }
 9    //
10 }
11 
12 

 ·  运行程序。你将看到如何运用特定的数据结构自动生成用户界面。导航控件包含了新的Department和Position项,它们允许你访问Department和Position对象。注意Contact明细窗口(或者叫Contact明细视图),创建了新的DepartmentPosition的查找编辑器。通过此编辑器你可以为当前的Contact选择所需的Department和Position。另外,你还可以自定义Department对象列表或者单个的Department(Position)对象。前者,你需要点击New按钮。后者,按住Ctrl+Shift然后点击所需要的对象编辑器。

 

 


我的话:

对于我来说,比较感兴趣的是这种UI是如何通过框架产生出来的。QuickStart完了之后,我想把这部分拿出来跟大家分享一下。

 

上一篇【翻译】eXpressAppFramework QuickStart 业务模型设计(三)—— 提供初始化数据

下一篇【翻译】eXpressAppFramework QuickStart 业务模型设计(五)—— 从业务类库中添加类 

 

 

 

转载于:https://www.cnblogs.com/1231net/archive/2009/10/22/1587983.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存重映射

文章目录1 kmap2 映射内核内存到用户空间使用remap_pfn_range使用io_remap_pfn_rangemmap文件操作建立VMA和实际物理地址的映射mmap 之前分配 一次性映射mmap 之前分配 Page FaultPage Fault 中分配 映射内核内存有时需要重新映射,无论是从内核到用户空间还是从内…

math.sqrt 有问题_JavaScript中带有示例的Math.sqrt()方法

math.sqrt 有问题JavaScript | Math.sqrt()方法 (JavaScript | Math.sqrt() Method) The Math.sqrt() method is inbuilt in JavaScript to find the square root of a number. In this tutorial, we will learn about the sqrt() method with examples. JavaScript中内置了Mat…

标题:移动距离

标题:移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3… 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下: 1 2 3 4 5 6 12 11 1…

ISAPI Rewrite 实现简单url重写、二级域名重写

实现步骤: 第一步:下载ISAPI_Rewrite.rar,将Rewrite文件夹和httpd.ini直接放在项目根目录下面。 第二步:IIS配置,筛选Rewrite文件夹里面的Rewrite.dll文件,如图: 第三步:在httpd.ini…

用户登录

用户登录 代码namespace 用户登录 {public partial class Form1 : Form{public Form1(){InitializeComponent();}bool b1, b2, b3, b4, b5, b6;private void button1_Click(object sender, EventArgs e){try{if (b1 && b2 && b3 && b4 && b5 &…

进程上下文和中断上下文

文章目录进程的preempt_count变量thread_infopreempt_counthardirq相关softirq相关上下文原文链接: https://zhuanlan.zhihu.com/p/88883239进程的preempt_count变量 thread_info 在内核中,上下文的设置和判断接口可以参考 include/linux/preempt.h 文…

标题:凑算式

标题:凑算式 这个算式中AI代表19的数字,不同的字母代表不同的数字。 比如: 68/3952/714 就是一种解法, 53/1972/486 是另一种解法。 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要…

汇编中imul_JavaScript中带有示例的Math.imul()方法

汇编中imulJavaScript | Math.imul()方法 (JavaScript | Math.imul() Method) Math.imul() is a function in math library of JavaScript that is used to the 32-bit multiplication of the two values passed to it. It uses C-like semantics to find the multiplication. …

AFTER触发器与INSTEAD OF触发器的区别

INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,…

Linux内存地址管理

文章目录系统内存布局内核地址的低端和高端内存概念低端内存高端内存地址转换和MMULinux中的四级分页模型虚拟地址字段页表处理将虚拟地址转换物理地址Linux系统中的每个内存地址都是虚拟的,它们不直接指向任何物理内存地址。每当访问内存位置时,可以执行…

录制caf 转 mp3

编译需要使用的 lame库http://www.cocoachina.com/bbs/read.php?tid108237参考的文章http://blog.csdn.net/ysy441088327/article/details/7392842说起来,我一直在找一个音频转换成mp3的方法。一年前,我成功编译出了一个lame for armv7的库。苦于不会使…

杭电2012-素数判定(C)

Problem Description 对于表达式n^2n41&#xff0c;当n在&#xff08;x,y&#xff09;范围内取整数值时&#xff08;包括x,y&#xff09;(-39<x<y<50)&#xff0c;判定该表达式的值是否都为素数。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;由两个整数…

math.ceil带小数点_JavaScript中带有示例的Math.ceil()方法

math.ceil带小数点JavaScript | Math.ceil()方法 (JavaScript | Math.ceil() Method) Math.ceil() is a function in math library of JavaScript that is used to round up the number passed to the function. The method will return the nearest integer value indeed is g…

開發記要 詭異的變量

告別繁體文盲,從寫blog開始 Variable命名很重要,有多重要,看看.net和java的加密就知道, 都是把variable改到一塌糊塗,你想看看都沒門. 但是這幾天看遺留系統的代碼,真是大開眼界。 我一直以為別人寫a,b,c,d這些單字節variable已經很過分。直到我看到以下這幾個&#xff0…

排序算法---快速排序、堆排序、冒泡排序

排序算法1 快速排序代码实现stdlib库快排2 堆排序堆排序的基本思想如何构造一个大顶堆排序3 冒泡排序1 快速排序 文章原地址&#xff1a;https://blog.csdn.net/morewindows/article/details/6684558 快速排序的平均时间复杂度是0(NlogN)&#xff0c;它采用了一种分治的策略&a…

CSS Hack 汇总快查

*:lang(zh) select {font:12px !important;} /*FF的专用*/ select:empty {font:12px !important;} /*safari可见*/ 这里select是选择符&#xff0c;根据情况更换。第二句是MAC上safari浏览器独有的。 仅IE7识别 *html {…} 当面临需要只针对IE7做样式的时候就可以采用这个HACK…

杭电2013-蟠桃记(C++)

Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事&#xff0c;你们一定都觉得这猴子太闹腾了&#xff0c;其实你们是有所不知&#xff1a;悟空是在研究一个数学问题&#xff01; 什么问题&#xff1f;他研究的问题是蟠桃一共有多少个&#xff01; 不过&#…

c#中重载单目运算符-_C#程序重载二进制运算符(-,*,/)

c#中重载单目运算符-Here, we will design overloaded methods for binary operators: minus, multiply and divide. In the below program, we will create a Calculator class with data member val. 在这里&#xff0c;我们将为二进制运算符设计重载方法&#xff1a;减&…

项目总结:华南师范大学校园开发教育android客户端总结

忽略之前小打小闹&#xff0c;这个项目算是我的第一个项目--SCNU的网络公选课的android版本的客户端。项目是从5月中旬开始的&#xff0c;中间经历了几个星期的复习考试时间&#xff0c;到现在可以说是完工了吧&#xff08;或许还有写细节要修改&#xff09;。这个项目带给我蛮…

火鸟字幕合并器

火鸟字幕合并器-区块独立勾选-保存。汉王 PDF OCR转载于:https://www.cnblogs.com/hnytwn/archive/2009/10/31/1593395.html