我需要能够在案例表单上显示案例字段(ticketnumber),以便
我尝试了显而易见的字段readonly,这使得它在IE8 / 2013中可能无法复制,可能还有其他客户端组合。
只是想知道在我花时间之前是否有人想出了最好的方法。我很想使用html资源,但这似乎有点过分......
答案 0 :(得分:0)
将字段添加到表单的页眉或页脚。您现在可以通过选择它来复制字段,因为它只是文本但无法编辑。
确保在插件中强制执行此业务规则,或者用户可能会意外(或有意)通过批量编辑,Excel导入,OData,API等进行更改。
<强> EDITED 强>
由于IE9不允许您从页眉/页脚复制,因此您可以执行以下操作:
这是受支持的方法。
不受支持,您自担风险是通过向表单添加OnLoad事件处理程序来取消KeyPress事件,然后将OnKeyDown事件处理程序添加到相应的字段:
function OnLoad(){
document.getElementById("new_field").onkeydown =
function(evt) { return false; };
}
只需将"new_field"
更新为相应的字段名称即可。任何编辑该字段的尝试都将被阻止。
答案 1 :(得分:0)
在这里回答自己。我最终使用单个按钮使用Web资源。如果是一个新表单,我禁用按钮文本=“没有信息,直到保存”按钮。如果我感兴趣的字段有值,我启用按钮text = field value
的按钮。
按下按钮会使用方便的"copy to clipboard" mechanism here。
每个客户都很棒。 Web资源不会显示在Outlook阅读窗格中,但我在表单上默认显示感兴趣的字段,以便在阅读窗格中显示该字段的副本。在加载表单时,我使该字段不可见,因此用户只能看到Web资源。
Nicknow的javascript处理程序解决方案也可以。
<强>更新强>
我最终使用只读文本元素并自动选择文本onclick。这是代码:
<!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>