我最近将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;">
此问题发生在实体的更新形式中(因此所有者不为null)。 我把所有者移到了一个部分并试图隐藏该部分,但不幸的是该部分 不会隐藏。 * 但如果我将所有者移出该部分,该部分将隐藏。我想知道这个所有者领域有什么,不会让我隐藏它。
答案 0 :(得分: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";
}
答案 1 :(得分:0)
因为这是CRM中表单的基本部分,所以我猜你的真正问题是导致字段不被隐藏的其他问题。如果你在IE中按F12
,然后转到脚本选项卡进行调试,你会看到任何javascript错误吗?
同时确保您正在查看正确的。在CRM 2011中,您可以为不同的角色提供不同的表单,因此请务必检查左上角的表单。
不要忘记发布您的自定义设置!
我知道如果某个字段被标记为必需,如果您尝试保存该表单并且该字段为空,它仍会显示它。这是在实体的创建上发生的,还是已经填充了值的实体的更新?
我会尝试将字段移动到它自己的部分,并使整个部分不可见。这也是一个很好的做法,因为如果您向表单添加其他字段,隐藏的字段将占用表单中的空格。
答案 2 :(得分:0)
您使用的是RTM版本的CRM 2011吗?已经使用汇总1
修复了已知错误如果未选中“默认值可见”字段,则无法通过客户端API将字段可见性设置为“true”。
也许您的问题与此错误相关/相关
您可以在此处阅读更改日志:
Update Rollup 1 for Microsoft Dynamics CRM 2011 is available