`
feiliboos
  • 浏览: 662735 次
文章分类
社区版块
存档分类
最新评论

Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]

阅读更多

涉及的实体

1.“商机”实体

2.“客户”实体


需要实现的需求

1.当“客户”中的属性值“主要联系人”被清空时,删除被清空的“联系人”记录。

2.当“客户”中的属性值“年收入”更改时,需要更新所有与其关联的“商机”记录。将“商机”记录中的属性值“预计收入”更新为最新状态。(商机的“预计收入”=客户的“年收入”)


实现方案

1.在“客户”实体的onload事件中获取“主要联系人”的值并进行缓存。并为属性“主要联系人”编写onchange事件,当该值发生改变时与onload事件缓存的值进行比较,如果是清空操作。则删除被清空的“联系人”记录。

2.为“客户”实体中的属性“年收入”编写onchange事件。当该值发生改变时,更新与其关联的所有“商机”记录中的属性值“预计收入”。


技术分析

设计的实现方案使用了Ajax技术,难点在于如何构造需要传送给服务器端的信息,以及跨实体进行迭代更新操作。


实现步骤

图1

图2

图3

图4

图5

图6

图7

图8

图9

图10

图11

图12

图13

图14


使用到的脚本

实现方案1所用到的脚本如下:



实现方案2所用到的脚本:



代码分析

SaveTempData函数在实体的onload事件时会缓存一个值,方便以后获取。这点说明,实体上的onload,onsave以及每个属性的onchange事件都是在一个对象上执行的,所以我们可以通过类似“this.data=123”这样的方法制作一个公共环境变量。

通过Ajax对实体进行更新和删除操作时需要设置一些特殊的请求头信息。更新操作:uptRequest.SetRequestHeader("X-HTTP-Method", "MERGE");删除操作:delRequest.SetRequestHeader("X-HTTP-Method","DELETE")。


小结

现在我们已经介绍完了用JS对实体进行CRUD操作,实现这类操作的编码并不是很困难。但是需要非常的细小,很多时候我们往往会因为一个拼写错误而调试半天。当然,

我并不希望这类情况天天发生。所以在接下来的章节中我将开发一个CRUD的辅助类,这样我们才能从无尽的噩梦中逃离。

代码下载

本章的解决方案下载

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics