CRM 4.0 打印预览页面隐藏字段

CRM 4.0 没有提供基于Field的安全机制,可能是因为会牵扯到性能的问题。不过我已经向微软提了建议,希望在下个版本里有所增强。但是在当前的版本里没有Supported的方法可以实现。我注意到这个打印预览窗体实际上是被窗体上的按钮触发的,所以window.opener 就是这个CRM窗体,这样就可以比较它上面的字段属性了,如果设定成 style.display="none"; 的形式,我们也可以在当前的打印预览窗体里隐藏对应的字段。同样也可以隐藏Tab,不过方法有些不同:因为打印预览里的Tab并没有id,所以根据className等来判断。
 

我提供这个方法可以解决CRM的打印需求,并没有真正实现了 field level security,比如在高级查找里还可以发现所有可搜索字段。 如果你的企业CRM应用有严格的安全考量,这个方法并不适合。

 

你需要修改的文件是  /CRMWeb/_forms/print/print.aspx , 把下面的代码帖在 </html> 之上:



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> <!--
Field level security on Print form
author: Jim Wang @ July 
2009
http:
// jianwang.blogspot.com
http://mscrm.cn
-->

< script language = " javascript " >
var  printFrame  =  document.getElementById( " printMain " );
var  printWindow  =  document.frames[ " printMain " ];
printFrame.onreadystatechange 
=   function () 
{
    
if (window.opener  &&  printWindow.document.readyState  ==   " complete " )
    {
        
// hide attributes
         var  allFields  =  opener.document.getElementsByTagName( " TD " );
        
for  ( var  i  =   0 ; i  <  allFields.length; i ++ )
        {
            
var  thisField  =  allFields[i];
            
if  (thisField.style.display  ==   " none " )
            {
                printWindow.document.getElementById(thisField.id).style.display 
=   " none " ;
            }
        }
        
        
// hide tabs
         var  printTabs  =  printWindow.document.getElementsByTagName( " DIV " );
        
var  openerTabs  =  opener.document.getElementsByTagName( " LI " );
        
for  ( var  i  =   0 ; i  <  openerTabs.length; i ++ )
        {
            
var  openerTab  =  openerTabs[i];
            
if  (openerTab.className  &&  openerTab.className  ==   " ms-crm-Tab " )
            {
                
if (opener.document.getElementById(openerTab.id).style.display  ==   " none " )
                
var  printTab  =  printTabs[openerTab.id.replace( " tab " , "" ).replace( " Tab " , "" )];
                printTab.style.display 
=   " none " ;
            }
        }

    }
}
< / script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值