none
一个小问题 RRS feed

  • 问题

  • 版主,我现在在accounts实体的表格里面添加了一个tab,我想在这个tab里面显示所有contacts里面的联系人,因此我想把contacts里面的所有东西调用到这个新的tab下面。

    2009年5月4日 13:04

答案

  • 创建一个 IFRAME,然后写类似下面的js代码放到onload里面
    if(crmForm.FormType !='1' && crmForm.FormType !='5')
    {
    var sArea = "主要实体构架名称_相关实体构架名称s";
    var sBaseUrl = "http://"+document.location.host+"/userdefined/areas.aspx?"; //如果是系统实体这里地址要修改
    var html = sBaseUrl;
    html += "oId=" + crmForm.ObjectId;
    html += "&oType=" + crmForm.ObjectTypeCode;
    html += "&security=" +crmFormSubmit.crmFormSubmitSecurity.value;
    html += "&tabSet=" + sArea;
    crmForm.all.IFRAME_XXXX.src=html
    }
    else
    {
    crmForm.all.IFRAME_XXXX.style.visibility = 'hidden';
    }

    类似的方法:
    http://microsoftcrm3.blogspot.com/2008/06/show-associated-activities-in-iframe.html
    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    2009年5月5日 8:57
    版主
  • 我在你的另一个帖子里回复了:


    Hi,

    我最近有2篇关于IFrame的文章,可以参考:
    CRM 4.0 IFrame: Show Advanced Find Result View
    CRM 4.0 IFrame: Show Entity's Associated View


    就你的问题回答:

    navActivities 是 Activity
    navActivityHistory 是 History

    用这段代码:

    var navId = "navActivities";
    
    if(document.getElementById(navId) != null)
    {
      var tmp = document.getElementById(navId).onclick.toString();
      tmp = tmp.substring(tmp.indexOf("'")+1, tmp.indexOf(";"));
      var loadArea = tmp.substring(0, tmp.indexOf("'"));
      var roleOrd =  (tmp.indexOf("roleOrd") == -1) ? -1 : tmp.substring( tmp.indexOf("roleOrd"), tmp.lastIndexOf("'")).replace("\\x3d", "=");
      crmForm.all.IFRAME_view.src = (roleOrd == -1) ? GetFrameSrc(loadArea) : GetFrameSrc(loadArea) + "&" + roleOrd;
    }
    
    function GetFrameSrc(tabSet)
    {
      if (crmForm.ObjectId != null)
      {
        var id = crmForm.ObjectId;
        var type = crmForm.ObjectTypeCode;
        var security = crmFormSubmit.crmFormSubmitSecurity.value;
        var pathname = document.location.pathname;
        var patharea = pathname.substring(0, pathname.indexOf("edit.aspx")) + "areas.aspx?";
    
        return (patharea + "oId=" + id + "&oType=" + type + "&security=" + security + "&tabSet=" + tabSet);
      }
      else
      {
        return "about:blank";
      }
    }


    Cheers,
    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年5月7日 21:56
    版主

全部回复

  • 创建一个 IFRAME,然后写类似下面的js代码放到onload里面
    if(crmForm.FormType !='1' && crmForm.FormType !='5')
    {
    var sArea = "主要实体构架名称_相关实体构架名称s";
    var sBaseUrl = "http://"+document.location.host+"/userdefined/areas.aspx?"; //如果是系统实体这里地址要修改
    var html = sBaseUrl;
    html += "oId=" + crmForm.ObjectId;
    html += "&oType=" + crmForm.ObjectTypeCode;
    html += "&security=" +crmFormSubmit.crmFormSubmitSecurity.value;
    html += "&tabSet=" + sArea;
    crmForm.all.IFRAME_XXXX.src=html
    }
    else
    {
    crmForm.all.IFRAME_XXXX.style.visibility = 'hidden';
    }

    类似的方法:
    http://microsoftcrm3.blogspot.com/2008/06/show-associated-activities-in-iframe.html
    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    2009年5月5日 8:57
    版主
  • 版主,不好意思,您这里的"主要实体构架名称_相关实体构架名称s”中的主要实体构架名称是指accounts吗?相关实体架构名称是contacts吗?这个相关实体构架名称后面的s是什么意思?是要写下所有相关的实体名称么?
    还有,实体的地址怎么去查看?

    2009年5月5日 10:39
  • 客户跟联系人的sArea=areaContacts

    你可以使用IEDeveloper 来查


    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    2009年5月5日 11:34
    版主
  • 版主,我对这个还是一点不理解。能方便加您一个即时聊天方式吗?例如MSN,QQ。我的是liwei.qie@live.cn  5906977
    当我弄懂之后,我会把我自己对这个问题的解决方法和建议写在这里供大家分享。
    2009年5月5日 12:26
  • function GetFrameSource(tabSet)
    {
    if (crmForm.ObjectId != null)
    {
    var oId = crmForm.ObjectId;
    var oType = crmForm.ObjectTypeCode;
    var security = crmFormSubmit.crmFormSubmitSecurity.value;
    return "areas.aspx?oId=" + oId + "&oType=" + oType + "&security=" + security + "&tabSet=" + tabSet;
    }
    else
    {
    return "about:blank";
    }
    }
    crmForm.all.IFRAME_HistoryFrame.src = GetFrameSource("areaActivityHistory");

    我测试了一个这样的代码,是显示activities history的。因为history里面是显示之前历史的activity,而activities里面是显示未来将来activity。
    但是我现在想把这段代码改成显示activities显示未来的。

    请朋友看一下这段代码,怎么修改。
    2009年5月5日 12:59
  • function getParameter(param) {             
                var query=window.parent.location.href  ;
                            var value;
                var iLen = param.length;
                var iStart = query.indexOf(param);
                if (iStart == -1)
                    return "";
                iStart += iLen + 1;
                var iEnd = query.indexOf("&", iStart);
                if (iEnd == -1)
                    return query.substring(iStart);
                return query.substring(iStart, iEnd);
            }
     
    var value = getParameter('id').substring(1,37);
    //alert(value);
    var url1="http://172.29.129.182/FounderCRM/sfa/accts/areas.aspx?oId=%7b";
    var url2="%7d&oType=1&security=852023&tabSet=areaContacts";
    var url3=url1.concat(value);
    var url=url3.concat(url2);
    //alert(url);
    if(value=="")
    {
    crmForm.all.IFRAME_contact.src="";
    //document.getElementById(IFRAME_contact).style.display='none';
    }
    else
    {
    crmForm.all.IFRAME_contact.src=url;
    }
    刀客,这是我写法,和你实现的功能一样,当时我发现很别扭,我本来只想在客户里看到联系人的列表,但是用这中做法现在不仅能看到列表,还看到了联系人列表上面那点按钮,怎么样做到只看到列表,类似gridview????


    梅小虎
    2009年5月6日 3:38
  • 我的问题还没有解决掉,希望朋友帮忙解决一下,在这里先谢谢了!
    2009年5月7日 7:06
  • 我在你的另一个帖子里回复了:


    Hi,

    我最近有2篇关于IFrame的文章,可以参考:
    CRM 4.0 IFrame: Show Advanced Find Result View
    CRM 4.0 IFrame: Show Entity's Associated View


    就你的问题回答:

    navActivities 是 Activity
    navActivityHistory 是 History

    用这段代码:

    var navId = "navActivities";
    
    if(document.getElementById(navId) != null)
    {
      var tmp = document.getElementById(navId).onclick.toString();
      tmp = tmp.substring(tmp.indexOf("'")+1, tmp.indexOf(";"));
      var loadArea = tmp.substring(0, tmp.indexOf("'"));
      var roleOrd =  (tmp.indexOf("roleOrd") == -1) ? -1 : tmp.substring( tmp.indexOf("roleOrd"), tmp.lastIndexOf("'")).replace("\\x3d", "=");
      crmForm.all.IFRAME_view.src = (roleOrd == -1) ? GetFrameSrc(loadArea) : GetFrameSrc(loadArea) + "&" + roleOrd;
    }
    
    function GetFrameSrc(tabSet)
    {
      if (crmForm.ObjectId != null)
      {
        var id = crmForm.ObjectId;
        var type = crmForm.ObjectTypeCode;
        var security = crmFormSubmit.crmFormSubmitSecurity.value;
        var pathname = document.location.pathname;
        var patharea = pathname.substring(0, pathname.indexOf("edit.aspx")) + "areas.aspx?";
    
        return (patharea + "oId=" + id + "&oType=" + type + "&security=" + security + "&tabSet=" + tabSet);
      }
      else
      {
        return "about:blank";
      }
    }


    Cheers,
    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年5月7日 21:56
    版主
  • Jim Wang 您好,

    这个显示未来activities的问题解决了,我想知道我的原始问题怎么解决?就是想把contacts里面的所有东西调用到这个新的tab下面。

    因为刀客的代码里面,这两句我不明白。主要实体构架名称_相关实体构架名称是指什么?我在哪里可以查到。还有系统实体的地址要在哪里查看?
    应为我不知道在我CRM里面这些怎么替换。

    var sArea = "主要实体构架名称_相关实体构架名称s";
    var sBaseUrl = "http://"+document.location.host+"/userdefined/areas.aspx?"; //如果是系统实体这里地址要修改

    2009年5月11日 8:29
  • Jim Wang 您好,

    这个显示未来activities的问题解决了,我想知道我的原始问题怎么解决?就是想把contacts里面的所有东西调用到这个新的tab里面。
    2009年5月12日 12:57
  • 你用IE Developer Toolbar 点击Account下面的Contact,就会看到这个navId='navContacts';
    替换一下就可以了。


    Jim

    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年5月12日 14:04
    版主
  • IE Developer Toolbar 安装之后怎么用,我安装到IE7当中之后,在工具栏当中找不到。
    2009年5月12日 14:27
  • 你可以浏览一下刀客的blog。
    这个帖子先关了吧,希望每个帖子focus on一个主要问题。

    Thanks,
    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年5月13日 10:54
    版主
  • 好的,那我重新对那个tab里面加contacts的方法发一个新帖子
    2009年5月13日 12:35