我想在CRM 2011表单上放置一个按钮。
function create_button(fldName, btnLabel, btnWidth, evt)
{
try{
fldName = "inmate_button_submit";
btnLable="Click Me";
// btnWidth="200px";
var btn = '<button class="ms-crm-Button" onclick="evt()" style="width:50px" id="' + fldName + '" onmouseover="Mscrm.ButtonUtils.hoverOn(this);" onmouseout="Mscrm.ButtonUtils.hoverOff(this);" >Click Me</button>';
var ctrl = null;
try {
ctrl = Xrm.Page.ui.controls.get(fldName).get_chromeElement()[0];
} catch (e) {
ctrl = Xrm.Page.ui.controls.get(fldName)._control.get_element();
}
// Add the new button
ctrl.innerHTML += btn;
// Hide the textbox
ctrl.children[0].style.display = 'none';
ctrl.children[1].style.display = 'none';
// Hide the label
Xrm.Page.ui.controls.get(fldName).setLabel(btnLable);
// Add Event to the newly created button
ctrl.children[0].attachEvent('onclick', evt);
}
catch(e){alert(e.description);}
}
function evt()
{
alert("You have clicked me!!");
}
以上是我将以下代码放在表单上的代码。当我点击按钮后,显示警告crm给我以下错误。
ERROR 发生了错误。 再次尝试此操作。如果问题仍然存在,请检查Microsoft Dynamics CRM社区或您的解决方案或联系....
我不知道为什么会这样。有帮助吗?
答案 0 :(得分:3)
请记住,在某些浏览器中,使用getElementById将不受支持,可能无法正常工作(在Outlook 2007中不起作用)。
我建议将其放在网络资源中,或者使用功能区来实现此功能。这些中的任何一个都符合您的要求吗?
答案 1 :(得分:1)
如果您使用js作为网络资源,那么您不应该遇到任何问题。
或者你甚至可以触发OnLoad函数
请参阅以下内容:
http://www.mscrmconsultant.com/2012/07/insert-custom-button-on-crm-form-using.html
答案 2 :(得分:0)
如果您需要访问表单,我建议添加自定义webresource(在onload事件中显示contanis javascript功能的HTML页面),使用window.parent.document.Xrm.Page ....
答案 3 :(得分:0)
2件事可能会导致此问题:
解决方案:尝试在全球范围内注册evt功能,即
evt = function() { alert("…"); }
或
window.evt = function() {}
2。您的按钮使用与占位符字段相同的字段名称。 这可能会导致内部问题。
解决方案:尝试给你的按钮另一个(虚假)id而不是fieldname +“_button”
答案 4 :(得分:0)
您是否尝试过第三方应用程序......
http://crmvisualribbonedit.codeplex.com/
从Web资源调用该函数。 注意:请记住添加$以引用Web资源位置 示例$ webresource:ButtonScript.js