2013-08-16 46 views
1

我正在尝试在Dynamics CRM中的窗体上创建一个按钮,以便onClick按钮显示一个对话框。我使用的JS代码如下:动态CRM自定义窗体事件中的错误Javascript

function addButton(attributename) { 
if (document.getElementById(attributename) != null) { 
    var sFieldID = "field" + attributename; 
    var elementID = document.getElementById(attributename + "_d"); 
    var div = document.createElement("div"); 
    div.style.width = "19%"; 
    div.style.textAlign = "right"; 
    div.style.display = "inline"; 
    elementID.appendChild(div, elementID); 
    div.innerHTML = '<button id="' + sFieldID + '" type="button" style="margin-left: 4px; width: 100%;" ><img src="/_imgs/ico_16_4210.gif" border="0" alt="Dial this number"/></button>'; 
    document.getElementById(attributename).style.width = "80%"; 
    document.getElementById(sFieldID).onclick = function() {onbuttonclick(); }; 
    } 
} 

    function onbuttonclick() { alert('Hi');} 

此功能是用它获取接触实体的形式onload事件引发了JS的Web资源。每当表单加载事件触发时,我在对话框中出现以下错误:

此字段的自定义事件发生错误。 现场:窗口 事件:onload事件 错误:未定义

亲切指导我朝决议。 该代码取自示例示例。

+1

您拥有的示例代码很糟糕。表单应该通过XRM对象访问,而不是通过DOM。我建议你看看MSDN上的其他例子。 – Bvrce

+0

你想用这个按钮做什么? –

+0

现在我只想运行这个示例,即onClick这个应该显示一个对话框hi hi – pointer

回答

0

这只是表示您在JavaScript中某处出现了错误。

更好的解决方案是使用功能区按钮,并让功能区按钮调用javascript,而不是与DOM(不受支持)混淆。将以下代码放入您的ribbondiffxml中:

<Actions> 
    <JavaScriptFunction Library="$[js library name]" FunctionName="[js function name]" /> 
</Actions> 

具体而言,这应该进入CommandDefinitionNode。
下面是我做什么,通过JavaScript打开一个对话框的例子:

Ribbon.openDialogProcess = function (dialogId, EntityName, objectId) { 
var url = Xrm.Page.context.getClientUrl() + 
    "/cs/dialog/rundialog.aspx?DialogId=" + 
    dialogId + "&EntityName=" + 
    EntityName + "&ObjectId=" + 
    objectId; 
var width = 400; 
var height = 400; 
var left = (screen.width - width)/2; 
var top = (screen.height - height)/2; 
window.open(url, '', 'location=0,menubar=1,resizable=0,width=' + width + ',height=' + height + ',top=' + top + ',left=' + left + ''); 
} 

所以只需调用在RibbonDiffXML该方法。

相关问题