1

我最近将 crm 4 数据库迁移到 crm 2011。我们使用的是内部部署版本。

我现在正在调整脚本和表单以适应 crm 2011。对于我的一个表单,我遇到了以下问题:我试图从表单中隐藏所有者。

为此,我取消选中字段属性表单上的“默认可见”复选框。

这适用于大多数表单,但无论我做什么,都会在其中一个表单上显示所有者。我已经能够在表单中移动字段,删除标签等。所有这些都有效,但是对可见性的更改将不起作用。

有人见过这个吗?为什么它不起作用?有没有人知道如何在不编写自定义 javascript 的情况下解决问题(这可能会起作用,但我有兴趣让“默认可见”复选框再次起作用。

更新

自定义实体仅定义了一个表单。此表单上没有自定义 javascript,但我还是检查了 javascript 错误,但没有。更奇怪的是,如果我查看 html 代码,如果未选中复选框(样式可见性设置为可见!),我会看到以下代码:

<td class="ms-crm-FieldLabel-LeftAlign ms-crm-Field-Required" id="ownerid_c" style="visibility: visible;">

而复选框被勾选了我会得到(根本没有样式属性!):

<td class="ms-crm-FieldLabel-LeftAlign ms-crm-Field-Required" id="ownerid_c">

不用说我确实发布了我的更改。

在复选框按预期工作的表单上,我看到以下 html(样式属性显示设置为无):

<td class="ms-crm-FieldLabel-LeftAlign ms-crm-Field-Required" id="ownerid_c" style="display: none;">

更新 2

此问题发生在实体的更新表单中(因此所有者不为空)。我将所有者移动到一个部分并尝试隐藏该部分,但不幸的是该部分不会隐藏。*但是,如果我将所有者移出该部分,该部分将隐藏。我想知道这个所有者字段有什么,这不会让我隐藏它。

4

3 回答 3

1

这困扰了我很久,直到我意识到发生了什么。我试图使更新表单完全只读。CRM 表单要求更新表单上至少有一个可读字段。当它找不到时,它会留下一个可见且可读的(通常是所有者或名称字段或任何恰好是表单上的最后一个字段)。我在某处找到了以下 javascript 代码,它可以很好地禁用表单上的所有字段,而不会显示您设置为默认不可见的讨厌的所有者字段。(感谢作者,因为我不记得我在哪里得到它)

function DisableFormFields() {
    Xrm.Page.ui.controls.forEach(function(control, index) {
        if (doesControlHaveAttribute(control)) {
            control.setDisabled(true);
        }
    });
}

function doesControlHaveAttribute(control) {
    var controlType = control.getControlType();
    return controlType != "iframe" && controlType != "webresource" && controlType != "subgrid";
}
于 2014-03-10T19:29:15.787 回答
0

因为这是 CRM 中表单的基本部分,所以我猜测您的真正问题是导致该字段未被隐藏的其他问题。如果您F12在 IE 中推送,并转到脚本选项卡进行调试,您是否看到任何 javascript 错误?

还要确保您查看的是正确的。在 CRM 2011 中,您可以为不同的角色使用不同的表单,因此请务必检查左上角的下拉表单。

并且不要忘记发布您的自定义设置!

编辑

我确实知道,如果一个字段被标记为必填项,那么如果您尝试保存表单并且它为空,它将无论如何都会显示它。这是在创建实体时发生的,还是在已填充值的实体更新时发生的?

我会尝试将字段移动到它自己的部分,并使整个部分不可见。这也是一个很好的做法,因为如果您向表单添加其他字段,隐藏的字段将占用表单中的空间。

于 2013-02-04T13:53:38.653 回答
0

您使用的是 CRM 2011 的 RTM 版本吗?有一个已知错误已通过汇总 1 修复

如果未选择“默认可见”字段,则无法通过客户端 API 将字段可见性设置为“真”。

也许您的问题与此错误有关/相关

你可以在这里阅读更新日志:

Microsoft Dynamics CRM 2011 的更新汇总 1 可用

于 2013-03-24T22:55:18.660 回答