这节我们来谈谈Dynamics CRM中用JS对实体进行CRUD的操作。CRUD操作也就是Create,Read,Update,Delete的缩写,CRUD操作也是编程的最基本操作。建议您在阅读本章前已经确定掌握了之前章节介绍的知识。
通过JS怎么能对保存在服务器上的数据进行CRUD呢?也许你马上会意识到这里使用了Ajax技术,确实,这里的CRUD操作都是建立在Ajax的基础上。我们先来看看这节的实验环境吧:
涉及的实体:
1.“客户”实体
2.“联系人”实体
需要实现的需求:
1.在“客户”实体上对属性“联系人”进行选择时,进行判断。如果该联系人的属性“商务电话”为空时,弹出提示"当前选择的联系人电话号码为空",如果属性“商务电话”的值不为空,则获取该值并将该值写入“客户”实体中的属性“主要电话”。
2.当用户创建“客户”记录时没有填写值“联系人”。在该客户记录保存后自动添加一条“联系人记录”,该联系人的名称命名格式为:{客户名称}-主要联系人并设置该联系人的“商务电话”属性,更新的值等于“客户”实体中的属性“主要电话”。
实现方案:
1.对“客户”实体的属性“联系人”添加onchange事件,向服务器查询当前选择的“联系人”的“商务电话”是否为空。如果为空就提示,不为空就将该值赋给属性“主要电话”。
2.在”客户“实体的onsave事件中判断该记录是否为新建记录。如果是不新建记录则忽略处理,否则判断”联系人“是否有值,没有值就创建一条”联系人“记录。并将”主要电话“的值赋给”联系人“记录中的”商务电话“。
技术分析:
上面的2个实现方案涉及到了实体的Create和Read操作,而且这类操作是通过客户端的Javascript来完成的。所以在接下来的实现中,我们需要用Ajax技术来完成这2个实现方案。
实现步骤:
图1
图2
图3
图4
图5
图6
图7
图8
图9
图10
图11
使用到的脚本
GetContract
CreateContract
代码分析:
这节的重点就是GetContract和CreateContract函数,这两个函数分别实现了CRUD中的Create和Read功能。Read功能是通过Ajax以Get方式访问Dynaimcs CRM中的数据服务,实现难点就是访问数据的URL构造了。这个函数里面的查询URL是“/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'$')”,这个URL需要表达的意思是:访问Contract数据集和,提取id为$的记录。(这里的‘$’是个占位符)
CreateContract函数的实现难点是待添加实体的构造,这里的”实体“是指需要通过Ajax传送到服务器端进行处理的Javascript对象。该实体的构造需要按一定的规则才能成功,在后续的章节中我会将这些细点一一归纳出来。实体在发送给服务器前需要对其进行序列化(如:var addObject=window.JSON.stringify(Contact);),我们可以通过Dynamics
CRM SDk中提供的一个序列化类来完成该步操作。该类的添加步骤可以参阅图11,可以这里获取该类。
上面说的2个难点也是通过Javascript对实体进行CRUD操作的通病,当然也不是没有弥补的方法。制作一个高层类来封装这些容易出错的步骤将会显著的提高开发效率。
分享到:
相关推荐
Dynamics CRM 2011编程系列文章将会介绍作者在日常开发中涉及到的技术和心得,其中包含:脚本开发,插件开发,系统配置以及系统的高级开发技巧。具体情况请关照博客:http://blog.csdn.net/ghostbear
vue-dynamic-crud支持灵活配置,快速搭建CRUD前端界面,彻底摆脱拧螺丝:nut_and_bolt:。功能 CRUD功能模块。 支持可配置,动态渲染。 支持命令行快速生成代码块。预览启动项目安装依赖npm install启动本地开发环境...
crm-crud-basic REST和异步等待的CRM Crud
crud__js 简单的 javascript Crud 系统
Vue 2.6 + Laravel 6 + Axios CRUD示例应用 参见来自启示 安装 克隆回购 切换到目录 cd vue-laravel-crud 安装依赖项 composer install 复制.env文件 cp .env.example .env 修改DB_*价值.env与您的数据库配置。 ...
PHP-CRUD-UI 将UI添加到项目的单个文件PHP脚本 要求 PHP 7.0或更高版本,已启用用于MySQL,PgSQL或SqlSrv的PDO驱动程序 安装 这是一个文件应用程序! 在某个地方上传“ ui.php ”并享受它! 对于本地开发,您可以...
下一个克鲁德 next-crud是一个帮助程序库,它基于一个基于Next.js的Prisma模型的简单函数创建CRUD API路由。文献资料该文档可概述yarn add @premieroctet/next-crud 给定以下Prisma模式: model User { id Int @id @...
欺诈适用于使用NestJs构建的RESTful API 内置 :purple_heart: 通过和 :glowing_star: :eyes: :high_voltage: :collision: 我们相信,每个使用NestJs并构建一些RESTful服务(尤其是某些CRUD功能)的人都会发现@...
电子实现CRUD 在Electron JS中使用JS,CSS和HTML实现CRUD
关于Node JS环境的Mongo CRUD基础 安装git 安装nodejs mac: : 或 $ brew安装节点 $ node -v && npm -v 安装mongodb $ brew install mongodb $ mongo-版本 克隆此存储库 $ git clone && cd mongoCRUD 将...
FLEX 编程入门系列之 数据库CRUD操作
通过DOM4j实现xml文件中数据的增删改查,xml文件就类似于数据库
CRUD 操作CRUD 代表创建、读取、更新和删除。 以上就是持久化存储的四个基本功能。 此外,首字母缩略词中的每个字母都可以指代在关系数据库应用程序中执行并映射到标准 HTTP 方法、SQL 语句或 DDS 操作的所有功能。 ...
此存储库有助于在 Node.js 中的 MySQL 中执行 CRUD 操作
prisma-crud:Express和Prisma中的简单CRUD操作
Django-CRUD:这是基于Django框架的CRUD项目
desafio-reactjs-crud:Desafio GoStack和Reactjs实名制CRUD
CRUD-OOPPHP:在PHP中使用OOP的CRUD应用程序
nextjs_3_2crud_sqlite 版本:0.9.1 作者:中岛浩司/ kuc-arc-f.com 日期:2021/01/09 更新:2021/04/03概括Next.js + sqlite,CRUD示例设置npx create-next-app app1 --use-npm --example“ ” npm 纱加sqlite 纱线...
商品管理:商品CRUD 以及设置热卖,设置特价商品 商品大类管理:商品大类CRUD 商品小类管理:商品小类CRUD 订单管理:订单查询,订单查看,订单状态维护 留言管理:留言CRUD 公告管理:公告CRUD 新闻管理:新闻CRUD ...