如何在crm 2011表单上放置一个按钮。

时间:2013-11-26 16:30:05

标签: javascript dynamics-crm-2011 dynamics-crm

我想在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社区或您的解决方案或联系....

我不知道为什么会这样。有帮助吗?

5 个答案:

答案 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件事可能会导致此问题:

    按钮无法访问
  1. evt功能
  2. 解决方案:尝试在全球范围内注册evt功能,即

    evt = function() { alert("…"); } 
    

    window.evt = function() {} 
    

    2。您的按钮使用与占位符字段相同的字段名称。 这可能会导致内部问题。

    解决方案:尝试给你的按钮另一个(虚假)id而不是fieldname +“_button”

答案 4 :(得分:0)

您是否尝试过第三方应用程序......

http://crmvisualribbonedit.codeplex.com/

从Web资源调用该函数。 注意:请记住添加$以引用Web资源位置 示例$ webresource:ButtonScript.js