帐号与Accountid - Dynamics CRM中的iFrame

时间:2013-02-05 16:16:49

标签: javascript iframe dynamics-crm-2011

使用iFrames我目前知道如何使用getId()函数将它们包含在CRM中的帐户中。我需要能够通过accountnumber来做到这一点。是否有功能或解决方案来实现这一目标?

感谢您的帮助!

萨姆

编辑:在采取glosrob的建议之后,我添加了get('accountnumber')行,让我更接近我想要的位置,但它没有产生正确的结果。这是我用来生成IFRAME的代码:

function SetReport() {
    var id = window.parent.Xrm.Page.data.entity.attributes.get('accountnumber')
    var serverAndOrgUrl = '(*Company URL*)&AccountNumber=';
    var mycmd = '&rs:Command=Render&rc:Toolbar=false'
    var iframeSrc = serverAndOrgUrl + id + mycmd;

    var report = document.createElement("iframe");
    report.setAttribute('id', 'reportFrame');
    report.setAttribute('name', 'reportFrame');
    report.setAttribute('src', iframeSrc);
    report.setAttribute('height', '100%');
    report.setAttribute('width', '100%');
    report.setAttribute('scrolling', 'auto');
    report.setAttribute('frameborder', '0');

    var reportDiv = document.createElement("div");
    reportDiv.setAttribute('height', '100%');
    reportDiv.setAttribute('width', '100%');
    reportDiv.appendChild(report);
    document.body.appendChild(reportDiv);

    function ShowFrame() {
        if(report.readyState == "complete") {
            menubar = report.contentWindow.document.getElementById('mnuBar1');
            if(menubar != null) {
                menubar.style.display = "none";
            }

            editFilter = report.contentWindow.document.getElementById('trEditFilter');
            if(editFilter != null) {
                editFilter.style.display = "none";              
            }
        }
    }
}

生成了IFRAME,但没有数据出现在应该有数据的帐户上。这让我觉得帐号不匹配。

任何帮助将不胜感激!

谢谢,

萨姆

2 个答案:

答案 0 :(得分:0)

您可以在Communicating between IFRAME and an entity

使用此方法

基本上,您可以访问父表单的Xrm对象,这意味着您可以使用以下内容访问accountnumber属性:

parent.window.Xrm.Page.data.entity.attributes.get('accountnumber')

编辑:刚看到你的评论......

我把那个警报放在那里,它以'undefined'的形式返回。对于帐号,您可以从表单上的字段中获取值。

这两者是相关的。您需要在表单上使用accountnumber,即使它已被隐藏。

您可能还需要取消选中表单属性上的“限制跨站点脚本”。

此外,在创建表单上隐藏iframe,因为不存在帐号

是的,如果帐户尚未创建,那么显然没有相关数据需要检索,这样做会浪费时间 - 不确定我还有更多要添加的内容吗?

要测试表单是否处于创建模式,您可以使用

Xrm.Page.ui.getFormType() == 1//CREATE MODE

请参阅here

您可以测试创建模式,然后显示/隐藏该部分,具体取决于它是否处于创建模式。

答案 1 :(得分:0)

你问的以下几行是获取accountnumber属性对象:

var id = window.parent.Xrm.Page.data.entity.attributes.get('accountnumber')

这需要更新才能获取帐户编号的值,以便您可以在报告网址中使用它:

var id = window.parent.Xrm.Page.data.entity.attributes.get('accountnumber').getValue()