为了方便演示,我这里新建一个实体,实体定义如下:
还为它定义了如下的自定义字段,每种可定义的类型都有,基本上都是使用默认设置:
并且修改了它的窗体类型为主要的窗体,使它新建记录的界面如下所示:
我这里用代码演示,新建记录的时候为每个字段设置默认值。代码当然是JavaScript代码,需要放到类型为JScript的Web资源中,上传到CRM中并发布,然后和事件挂钩,这样就可以执行了。
我打开以前新建的解决方案,右击 CrmPackge 项目下面的 WebResources 文件夹,选择 添加 > 新建项。
选择 JScript File这种类型,取个合适的名称,然后点击添加按钮。
然后我的做法一般要修改这个文件的Display Name和Unique Name,如下。特别是Unique Name要注意,最好在下划线后面加上一个 / ,这样后面方便引用。
然后就是撰写代码了,我这里使用的代码如下,有个值得注意的地方就是字段名称全部用逻辑名称,也就是全小写。
if(typeof(LuoYong)=="undefined")
{LuoYong={ __namespace:true};}
LuoYong.DemoScript={
OnLoadHandler:function(){
if(Xrm.Page.ui.getFormType()==1){//新建记录
//主属性,名称字段,只能是单行文本
Xrm.Page.getAttribute("new_name").setValue("名称字段的值");
//为单行文本字段赋值
Xrm.Page.getAttribute("new_singleline").setValue("单行文本的值");
//为两个选项字段赋值,只能赋值为true或者false
Xrm.Page.getAttribute("new_twooptionset").setValue(true);
//为选项集字段赋值,为整数,是选项集的存储值,不是显示值
Xrm.Page.getAttribute("new_optionset").setValue(100000001);
//为货币字段赋值,小数即可
Xrm.Page.getAttribute("new_currency").setValue(100.5);
//为浮点数字段赋值,小数即可
Xrm.Page.getAttribute("new_float").setValue(101.5);
//为十进制字段赋值,小数即可
Xrm.Page.getAttribute("new_decimal").setValue(102.5);
//为整数字段赋值
Xrm.Page.getAttribute("new_integer").setValue(100);
//为日期和时间字段赋值
Xrm.Page.getAttribute("new_datetime").setValue(newDate());
//为多行文本字段赋值
Xrm.Page.getAttribute("new_multiline").setValue("多行文本字段的值多行文本字段的值多行文本字段的值多行文本字段的值多行文本字段的值");
//为查找字段赋值
var lookValue =newArray();
lookValue[0]=newObject();
lookValue[0].id ="F3A0BB75-F3AD-E311-80B4-00155D016705";
lookValue[0].entityType ="account";
lookValue[0].name ="A. Datum 公司 (示例)";
Xrm.Page.getAttribute("new_lookup").setValue(lookValue);
//利用新版本的alertDialog做提示
Xrm.Utility.alertDialog("新建状态下为字段赋值完毕!",function(){});
}
}
}
这里用到的getFormType,SDK中的解说如下,用来判断打开的表单的表单类型,我这里是用来判断是不是新建记录的表单。
Xrm.Page.ui.getFormType() |
Return Value
Type: Number
The following table lists the form types that correspond to the return value.
Value |
Form Type |
0 |
Undefined |
1 |
Create |
2 |
Update |
3 |
Read Only |
4 |
Disabled |
5 |
Quick Create (Deprecated) |
6 |
Bulk Edit |
11 |
Read Optimized (Deprecated) |
Note |
Quick Create forms return 1. The value 5 was used for an earlier type of quick create form that was removed. |
右击 CrmPackage 解决方案,选择 部署 ,部署完成后,我们到这个Visual Studio的解决方案连接的CRM解决方案中查看,你会发现多了你刚才的Web资源,名称就是之前设置的Unique Name,显示名称就是之前设置的 Display Name,还有个URL,因为我的CRM做了IFD部署,所以可能和你的有点不一样。这个部署的过程只是将Web资源上传,并没有发布,最好发布下。
然后就是将代码和事件挂钩了。打开 测试实体 的窗体类型为 主要 的窗体,点击Ribbon区的 窗体属性 按钮,弹出如下的 窗体属性 对话框,点击 添加 按钮。 将前面我们新增的Web Resource添加进去。 然后点击事件处理程序下面的 添加 按钮,在弹出的处理程序属性对话框中,库选择我们前面创建的Web资源,函数我这里输入 LuoYong.DemoScript.OnLoadHandler ,然后点击确定按钮。 设置的窗体属性综合起来,如下图所示。 然后保存窗体,最好发布整个解决方案,至少也要发布这个实体和之前我们创建的Web资源。然后我们去测试看看,效果如下,基本符合我的要求。