Dynamics crm 为什么将setSubmitMode(';始终';)中未更改的字符串字段以空字符串且不为null发送到服务器端?
未更改的字符串字段Dynamics crm 为什么将setSubmitMode(';始终';)中未更改的字符串字段以空字符串且不为null发送到服务器端?,dynamics-crm,dynamics-crm-2015,Dynamics Crm,Dynamics Crm 2015,未更改的字符串字段setSubmitMode('always')将以空字符串发送到服务器端,且不为null 复制步骤: 假设我们有两个字段:jk_name字符串类型,和jk_dummy任何类型 将jk_name值设置为null。保存记录 在字符串类型字段上调用setSubmitMode('always'): Xrm.Page.getAttribute("jk_name").setSubmitMode("always"); 更改jk_伪值值;不要更改jk_名称值 保存记录 在插件内部,观察目标
setSubmitMode('always')
将以空字符串发送到服务器端,且不为null
复制步骤:
jk_name
字符串类型,和jk_dummy
任何类型李>
jk_name
值设置为null
。保存记录setSubmitMode('always')
:
Xrm.Page.getAttribute("jk_name").setSubmitMode("always");
jk_伪值
值;不要更改jk_名称
值属性
,您将看到:
target -> Attributes -> Keys -> [0] -> "jk_name"
target -> Attributes -> Values -> [0] -> ""
也就是说,未更改的jk_name
字段将以空字符串值传递给插件。jk_code
。重复上述步骤,现在您将看到:
target -> Attributes -> Keys -> [0] -> "jk_code"
target -> Attributes -> Values -> [0] -> null
也就是说,未更改的jk_code
字段以空值传递给插件。
概括而言:
将setSubmitMode('always')
未更改的字符串字段以空字符串发送到服务器端,而将setSubmitMode('always')
未更改的非字符串字段以空字符串发送到服务器端
CRM这样做有什么具体原因吗?我想知道这是否是CRM使用原语的结果。 请参见他在何处描述不同的属性类型和默认值 我在这里复制了主表: CRM TYPE .NET TYPE CAN HOLD NULL? DEFAULT VALUE ----------------------+-------------------+----------------+--------------- Single Line of Text string Yes Option Set OptionSetValue Yes Two Options bool No false Image byte[] Yes Whole Number int No 0 Floating Point Number double No 0.0 Decimal Number decimal No 0 Currency Money Yes Multiple Lines of Text string Yes Date and Time DateTime No DateTime.MinValue Lookup EntityReference Yes CRM类型.NET类型可以容纳空值吗?默认值 ----------------------+-------------------+----------------+--------------- 单行文本字符串是 选项集选项设置值是 两个选项没有错 图像字节[]是 整数整数0 浮点数双精度0.0 十进制数字十进制数字0 货币是的 多行文本字符串“是” 日期和时间DateTime无DateTime.MinValue 查找实体引用是
我想知道这是否是CRM使用原语的结果。 请参见他在何处描述不同的属性类型和默认值 我在这里复制了主表: CRM TYPE .NET TYPE CAN HOLD NULL? DEFAULT VALUE ----------------------+-------------------+----------------+--------------- Single Line of Text string Yes Option Set OptionSetValue Yes Two Options bool No false Image byte[] Yes Whole Number int No 0 Floating Point Number double No 0.0 Decimal Number decimal No 0 Currency Money Yes Multiple Lines of Text string Yes Date and Time DateTime No DateTime.MinValue Lookup EntityReference Yes CRM类型.NET类型可以容纳空值吗?默认值 ----------------------+-------------------+----------------+--------------- 单行文本字符串是 选项集选项设置值是 两个选项没有错 图像字节[]是 整数整数0 浮点数双精度0.0 十进制数字十进制数字0 货币是的 多行文本字符串“是” 日期和时间DateTime无DateTime.MinValue 查找实体引用是 海朱德 当在字段上使用setSubmitMode(“always”)时,意味着在使用表单保存时,该字段将始终包含在上,在该表单中,您已使用JS为给定字段设置了该字段 MS docs的setSubmitMode功能如下:“设置保存记录时是否提交属性中的数据。” 这意味着在该表单上进行保存时,该字段将始终保存到数据库中 要理解为什么在目标实体中接收此字段为空,需要了解在执行上下文中传递给插件的目标实体的行为 目标实体将始终包含已更改的字段。在创建时,这意味着所有字段都已填写或始终处于提交模式。更新所有已更改的字段时,或在您的情况下,保存中始终包含的字段 相反,我们可以使用setSubmitMode通过使用“never”参数从不向数据库提交任何内容。 第三个选项是“dirty”,这是表单上所有字段的默认行为 我希望这能回答你的问题:)HeyJude 当在字段上使用setSubmitMode(“always”)时,意味着在使用表单保存时,该字段将始终包含在上,在该表单中,您已使用JS为给定字段设置了该字段 MS docs的setSubmitMode功能如下:“设置保存记录时是否提交属性中的数据。” 这意味着在该表单上进行保存时,该字段将始终保存到数据库中 要理解为什么在目标实体中接收此字段为空,需要了解在执行上下文中传递给插件的目标实体的行为 目标实体将始终包含已更改的字段。在创建时,这意味着所有字段都已填写或始终处于提交模式。更新所有已更改的字段时,或在您的情况下,保存中始终包含的字段 相反,我们可以使用setSubmitMode通过使用“never”参数从不向数据库提交任何内容。 第三个选项是“dirty”,这是表单上所有字段的默认行为
我希望这能回答您的问题:)谢谢,但它不能回答问题。谢谢,但它不能回答问题。谢谢。我知道
setSubmitMode()
是如何工作的。我问为什么字符串字段与非字符串字段的工作方式不同。这很奇怪。我复制是为了我自己的理智