• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MSCRM janmson
MS CRM顾问及二次开发
博客园    首页    新随笔    联系   管理    订阅  订阅

MS CRM復選框的解決方案

 

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
  for( var 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("||");
      
for( var 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");
  
    
for( var i = 0; i < getInput.length; i++ )  
    {   
      
if( getInput[i].checked)
      {
        PLV.value += getInput[i].nextSibling.innerText + "||";
      }
    }  
  } 
}
posted @ 2009-07-03 10:23  韩建兴  阅读(391)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3