【问题标题】:Dynamics CRM mandatory field which appears twice on the form, once hidden once visibleDynamics CRM 必填字段,在表单上出现两次,一次隐藏一次可见
【发布时间】:2013-02-06 14:25:59
【问题描述】:

我有一个包含两个部分的表单,这两个部分都包含一个“业务所需”的特定字段。在我当前的场景中,这些部分中的第一个是隐藏的,而第二个是可见的。 (基本上,两者中哪一个可见是在 JScript 中设置的,取决于下拉列表的值)。

问题是,如果用户没有为必填字段输入值然后点击保存,表单会尝试在两次出现的第一次(即不可见的一次)上验证它。当它发现用户没有填写此值时,它会将隐藏部分显示在视图中,尽管事实上相同的违规字段已经在表单的下方显示。

有什么办法可以阻止它这样做,或者以其他方式解决我的问题?

编辑:

好的,从下面的答案中,我想我可能没有把情况说得足够清楚。我不认为将字段设置为非强制性或用令牌值填充它会起作用,因为如果用户没有填写该字段,我确实希望验证强制性状态。

我遇到的问题是验证它后,它向用户显示了已隐藏的字段版本,而不是已经可见的版本。

据我所知,简单的 API,将字段设置为强制或不强制,同样适用于表单上该字段的任何出现,而不是一个特定的。

【问题讨论】:

    标签: dynamics-crm-2011 dynamics-crm


    【解决方案1】:

    编辑:好的,这不是很漂亮,但应该可以。

    您可以使用以下方法获取值的集合

    var bothControls = Xrm.Page.getAttribute('transactioncurrencyid').controls
    

    并使用

    bothControls.get(1)
    

    为您提供第二个(从零开始的索引,natch),以便您可以禁用它

    bothControls.get(1).setDisabled(true)
    

    这意味着将跳过验证

    【讨论】:

    • 嗨,glosrob 我认为这不会解决它,因为我确实希望验证该字段。请参阅对问题的编辑以进行澄清。
    • 啊,是的,我的错误,这很有趣 - 我认为在表单上两次时该值被复制到两个字段,显然不是......思维上限设置为'on'
    • 复制到其他字段,我看到问题了,不好意思今天拖了!
    【解决方案2】:

    您可以更改需求值:

    Xrm.Page.getAttribute("FieldName").setRequiredLevel("none");
    

    【讨论】:

    • 嗨佩德罗我不认为这会解决它,因为我确实希望验证该字段。请参阅对问题的编辑以进行澄清。
    【解决方案3】:

    您可以使用此调用 Xrm.Page.getAttribute("field_tonotbe_required").setRequiredLevel("none"); 来设置不需要的字段 但是由于该字段在表单上出现了两次,我不确定 Javscript SDK 是否会使所有字段都不需要,或者只是第一个字段,因此您可能必须从该部分遍历层次结构以找到该字段然后调用setRequiredLevel 在您希望更改的确切字段上。

    【讨论】:

    • 您认为可以将所需级别设置为表单上的字段实例之一而不是另一个?
    • 我想是的,你可能不得不深入研究 CRM SDK javascript 代码(不好玩)来弄清楚它在做什么,并找到你想要的属性并更新它,或者可能删除你不喜欢的那个...
    • 好的,谢谢。 Glosrob 的解决方案似乎完全符合您的建议,所以一切看起来都不错。
    【解决方案4】:

    您是否考虑过使用会在更改时触发并将输入值从可见部分字段填充到隐藏部分的对应项的脚本?

    假设两个业务必填字段分别称为HubbaBubba。将 JavaScript 代码连接到这两者,更改将检查 Hubba 是否为空(如果是,则将 Bubba 的内容复制到其中。否则,它将仅复制Hubba 中的内容到 Bubba 中。

    我假设这些字段在性质上是对应的,因此您可以在它们之间复制信息。

    我想到了另外两个选项(恕我直言,不太理想)。第一个是 Pedro 所说的,通过打开和关闭验证来增强。不确定它是否会起作用。为了完整起见,我只是提到它。

    第二个是应用 Polaris 的流程驱动 UI。真的不确定它是否会起作用,但理论上应该会。

    【讨论】:

    • 嗨,再次抱歉 - 情况可能还不够清楚。没有两个业务必填字段(Hubba、Bubba),只有一个,但它在表单上显示了两次。无论如何感谢您的回答,看来我已经通过 glosrob 的解决方案解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多