CRM: 创建CheckBox样式的下拉列表

 

CRM 4.0 里的下拉列表控件(PickList)只能存储单一的值,虽然我们可以通过设置 crmForm.all.new_picklist.multiple = true; 来实现多选功能,但用户必须按住CTRL键来逐个选择,效果并不好。我现在这个项目需要一些能够多选的PickList,所以我打算写一个通用的能被用户 认可的控件,并且Keep It Simple and Generic! 便于修改和重用。

使用方法非常简单:

1. 创建一个标准的Picklist attribute,并且填入所有的列表项,放在窗体上。比如叫做:new_picklist;
2. 创建一个nvarchar attribute,放在窗体上,并且隐藏标签。比如叫做:new_picklistvalue,这个attribute是用来存储picklist的选中项的;
3. 把下列代码放到窗体OnLoad() 里面。 

tip: 程序的思路是在窗体上绘制一个CheckBox样式的下拉列表,从picklist里取值,从picklistvalue里取选种的值。这种做法其实没有 在picklist里保存任何值,所以对于高级搜索来讲不会搜索到任何内容,建议设置picklist的搜索为“禁止”,同时让用户搜索 picklistvalue里的值。虽然用户不得不手工输入要搜索的内容,但是可以保存搜索设置。 

 

/*
  Checkbox style Multi-Select Picklist
  author: Jim Wang @ January 2009
  http://jianwang.blogspot.com
  http://mscrm.cn
*/

// PL - the picklist attribute; PLV - used to save selected picklist values 
var PL = crmForm.all.new_picklist;
var PLV = crmForm.all.new_picklistvalue;

if( PL != null && PLV != null )
{
  PL.style.display 
= "none";
  PLV.style.display 
= "none";
  
  
// Create a DIV container 
  var addDiv = document.createElement("<div style='overflow-y:auto; height:80px;border: 1px #6699cc solid;background-color: #ffffff;' />");
  PL.parentNode.appendChild(addDiv);
  
  
// Initialise checkbox controls
  forvar i = 1; i < PL.options.length; i++ )  
  { 
    
var pOption = PL.options[i];
    
if!IsChecked( pOption.text ) )
      
var addInput = document.createElement("<input type='checkbox' style='border:none; width:25px; align:left;' />" );
    
else
      
var addInput = document.createElement("<input type='checkbox' checked='checked' style='border:none; width:25px; align:left;' / >" );
  
    
var addLabel = document.createElement( "<label />");
    addLabel.innerText 
= pOption.text;
  
    
var addBr = document.createElement( "<br />");
  
    PL.nextSibling.appendChild(addInput);
    PL.nextSibling.appendChild(addLabel);
    PL.nextSibling.appendChild(addBr);
  }
  
  
// Check if it is selected
  function IsChecked( pText )
  {
    
if(PLV.value != "")
    {
      
var PLVT = PLV.value.split("||");
      
forvar i = 0; i < PLVT.length; i++ )  
      { 
        
if( PLVT[i] == pText )
          
return true;
      }  
    }
    
return false;
  }
  
  
// Save the selected text, this filed can also be used in Advanced Find
  crmForm.attachEvent( "onsave" , OnSave);
  
function OnSave()
  {
    PLV.value 
= "";
    
var getInput = PL.nextSibling.getElementsByTagName("input");
  
    
forvar i = 0; i < getInput.length; i++ )  
    {   
      
if( getInput[i].checked)
      {
        PLV.value 
+= getInput[i].nextSibling.innerText + "||";
      }
    }  
  } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值