none
【求助】CRM4.0 某个Entity Associated View自定义Button函数调用的相关问题 RRS feed

  • 问题

  • 大家好, 我现在这样一个需求,需要在Account左边Navigation bar的Contact associated view中添加一个自定义Button,该button的作用是选择Grid View中的一条记录,同时对这条选定的记录在不打开Form的情况下对某个Attribute进行更新,方法如下:

    在ISV.Config文件中找到这个ImportExportXml/IsvConfig/configuration/Entities/Entity name="contact"/Grid/MenuBar/Buttons节点,添加如下代码:
    <Button
       Icon="/_imgs/ico_18_debug.gif"
       Url="/ISV/test.htm"
       WinMode="2"
    >
       <Titles>
          <Title LCID="1033" Text="Get GUIDS" />
       </Titles>
       <ToolTips>
          <ToolTip LCID="1033" Text="Get GUIDS for selected records" />
       </ToolTips>
    </Button>


    在ISV文件夹下创建一个test.htm文件,代码如下:

    <html>
    
       <head>
    
          <title>GUIDs for records seleced in Grid</title>
    
          <script type="text/jscript">
    
             function listselecteditems()
    
             {
    
                var placeholder = document.getElementById("test");
    
                var sGUIDValues = "";
    
                var selectedValues;
    
                //Make sure window.dialogArguments is available.
    
                if (window.dialogArguments)
    
                {
    
                   selectedValues = new Array(window.dialogArguments.length -1);
    
                }
    
                else
    
                {
    
                   placeholder.innerText = "window.dialogArguments is not available.";
    
                   return
    
                }
    
                selectedValues = window.dialogArguments;
    
                if (selectedValues != null)
    
                {
    
                   for (i=0; i < selectedValues.length; i++)
    
                   {
    
                      sGUIDValues += selectedValues[i] +"\n";
    
                   }
    
                   placeholder.innerText = sGUIDValues;
    
                }
    
                else
    
                {
    
                   placeholder.innerText = "No records were selected.";
    
                }
    
             }
    
          </script>
    
       </head>
    
       <body onload="listselecteditems()">
    
       <div id="test"></div>
    
       </body>
    
    </html>


    这样一切运行正常,但我现在想做的是想直接写个listselecteditems()函数,然后在ISV.config中用脚本直接调用,<Button javascript="listselecteditems();">, 不想通过test.htm来实现,由于不能在ISV.config文件中直接写函数,所以我想问下这个listselecteditems()函数我应该写在哪里,希望能够得到大家的帮助,先谢谢大家了
    crm4.0学步
    2009年6月3日 20:59

答案

  • 全局脚本就是global.js,在目录 \\CRMWeb\_static\_common\scripts\ 下,把你的函数放到这里就可以在isv.config里面直接调用了(unsupported!!)。
    但是就你这个函数而言,会有些问题:因为如果在isv.config里面用JavaScript调用,这个函数里的一些方法就不适用了。


    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年6月4日 20:54
    版主
  • var  a= document.all[ ' crmGrid ' ].InnerGrid.SelectedRecords;
        
    var  selectedItems  =   new  Array(a.length);
        
    for  ( var  i = 0 ; i  <  a.length; i ++ )
        {
            
                selectedItems 
    =  a[ 0 ];
        }
        
            
    var  oId  =  selectedItems[ 0 ]; 
            
    return  oId ;
        }
    你試一下類似這樣行不行。如果可以告訴我一下.

    韓建興 http://jamson.cnblogs.com
    2009年6月6日 15:44

全部回复

  • 你可以写一个全局的JS脚本(包含这个函数)然后在ISV.config里引用就可以了。

    Cheers,
    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年6月4日 8:44
    版主
  • 你好,实在不好意思,由于之前没用过全局JS脚本,不知你能否提供个这样的简单例子和配置,先谢谢了


    crm4.0学步
    2009年6月4日 9:11
  • LZ.你的问题对我帮助很大。希望你能留个MSN,我还有一些深入的问题想请教你
    谢谢了。麻烦帮帮忙。谢谢!
    2009年6月4日 10:04
  • 你好,不谢,很高兴能帮到你,我的MSN不常用,不过你可以加我QQ(380705031),验证信息:MS CRM,或是邮箱:chinayaoyong@gmail.com
    crm4.0学步
    2009年6月4日 16:09
  • 全局脚本就是global.js,在目录 \\CRMWeb\_static\_common\scripts\ 下,把你的函数放到这里就可以在isv.config里面直接调用了(unsupported!!)。
    但是就你这个函数而言,会有些问题:因为如果在isv.config里面用JavaScript调用,这个函数里的一些方法就不适用了。


    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年6月4日 20:54
    版主
  • 你好,谢谢了,的确如果我这样用了,window.dialogArguments就老为null了,是不是我只能在ISV文件夹下加个文件才能解决window.dialogArguments的取值问题,先谢谢了。


    crm4.0学步
    2009年6月5日 9:23
  • 是的,因为只有打开网页才有window.dialogArguments的值。

    Jim


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com , http://mscrm.cn
    2009年6月5日 9:30
    版主
  • var  a= document.all[ ' crmGrid ' ].InnerGrid.SelectedRecords;
        
    var  selectedItems  =   new  Array(a.length);
        
    for  ( var  i = 0 ; i  <  a.length; i ++ )
        {
            
                selectedItems 
    =  a[ 0 ];
        }
        
            
    var  oId  =  selectedItems[ 0 ]; 
            
    return  oId ;
        }
    你試一下類似這樣行不行。如果可以告訴我一下.

    韓建興 http://jamson.cnblogs.com
    2009年6月6日 15:44
  • 韓建興的方法可行。


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