Dynamics crm 2011 可复制值的不可更改表单字段的最佳实践(2011/2013在线)
我需要能够在案例表单上显示案例字段(ticketnumber),以便Dynamics crm 2011 可复制值的不可更改表单字段的最佳实践(2011/2013在线),dynamics-crm-2011,dynamics-crm,crm,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm,Crm,Dynamics Crm Online,我需要能够在案例表单上显示案例字段(ticketnumber),以便 用户无法更改该值 可以从字段复制值(CTRL-C+右键单击/复制) 在所有crm支持的浏览器上工作的解决方案 使用outlook作为客户端的解决方案 解决方案必须使用支持的方法 我尝试过将字段设置为只读,这使得它在IE8/2013和其他客户端组合中不可复制 我只是想知道在我花时间之前,是否有人想出了最好的方法。我很想使用html资源,但这似乎有些过头了…将字段添加到表单的页眉或页脚。您现在只需选择字段即可复制该字段,因为它只是
我只是想知道在我花时间之前,是否有人想出了最好的方法。我很想使用html资源,但这似乎有些过头了…将字段添加到表单的页眉或页脚。您现在只需选择字段即可复制该字段,因为它只是文本,但无法编辑 确保此业务规则在插件中强制执行,否则用户可能会意外(或有意)通过批量编辑、Excel导入、OData、API等进行更改 已编辑 由于IE9不允许您从页眉/页脚进行复制,您可以执行以下操作:
function OnLoad(){
document.getElementById("new_field").onkeydown =
function(evt) { return false; };
}
只需将
“新字段”
更新为适当的字段名即可。任何编辑该字段的尝试都将被阻止。在此处回答我自己的问题。我最终使用了一个只需一个按钮的web资源。如果是新表单,我将使用按钮text=“保存前无信息”禁用该按钮。如果我感兴趣的字段有值,我将使用按钮文本=字段值启用按钮
按下按钮使用方便的按钮
在每个客户身上都很有效。Web资源不会显示在outlook阅读窗格中,但默认情况下,我会在表单上看到感兴趣的字段,以便该字段的副本显示在阅读窗格中。加载表单时,我将该字段设置为不可见,以便用户只看到web资源
Nicknow的javascript处理程序解决方案也会起作用
更新
最后,我使用了一个只读文本元素,并在单击时自动选择文本。代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="/WebResources/ClientGlobalContext.js.aspx"></script>
<meta charset="utf-8">
</head>
<body style="margin: 0px; padding: 0px;" onload="onload()">
<input id="fieldElement" onclick="onClickElement(this)" readOnly="true" value="save case for number" type="text">
<script>
var FORM_TYPE_UPDATE = 2;
var FORM_TYPE_READ_ONLY = 3;
var FORM_TYPE_DISABLED = 4;
function onload()
{
if (parent.Xrm.Page.ui.getFormType() == FORM_TYPE_UPDATE ||
parent.Xrm.Page.ui.getFormType() == FORM_TYPE_READ_ONLY ||
parent.Xrm.Page.ui.getFormType() == FORM_TYPE_DISABLED)
{
var value = parent.Xrm.Page.getAttribute('ticketnumber').getValue();
document.getElementById("fieldElement").value = value;
}
else
{
// must be a create. handled by default setup
}
return;
}
function onClickElement(element)
{
element.select();
}
</script>
</body>
</html>
var FORM_TYPE_UPDATE=2;
变量形式类型只读=3;
var FORM_TYPE_DISABLED=4;
函数onload()
{
if(parent.Xrm.Page.ui.getFormType()==表单类型更新||
parent.Xrm.Page.ui.getFormType()=表单类型只读||
parent.Xrm.Page.ui.getFormType()==表单类型(已禁用)
{
var value=parent.Xrm.Page.getAttribute('ticketnumber').getValue();
document.getElementById(“fieldElement”).value=value;
}
其他的
{
//必须是创建。默认设置下已处理
}
返回;
}
函数onClick元素(元素)
{
元素。选择();
}
我尝试了页眉/页脚,但在Outlook 2010/IE9中,这样的字段不能在表单上复制。到目前为止,我发现在任何地方都有效的唯一方法是使用web资源来显示单个字段。在HTML中,如何将字段值写入HTML也很重要。写(…)作品。将innerhtml注入到div中没有。好吧……我已经用IE10测试过了,但没有用IE9测试过-没有意识到你不能双击以突出显示IE9中的页眉/页脚字段。为满足此要求添加了一些新想法。非常感谢你的建议。任何不受支持的解决方案都适用于我(将更新问题)。我考虑过JS处理程序,它可以工作,但是很笨重。我实现了web资源,但在填充/边距方面遇到了问题。当我弄明白后,我会再次更新。哇,这太糟糕了。仅显示文本的web资源在2011年的更新表单上不可复制,在outlook呈现的ie9表单中也不可复制。2011/IE9和2013/IE9(创建/更新)中可复制完全相同的web资源。底线是,若使用IE8或9以及outlook和浏览器客户端,那个么我能看到的获得完全可复制字段的唯一方法就是使用上面的JS hack