zoukankan      html  css  js  c++  java
  • 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
      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; 25px; align:left;' />" );
        
    else
          
    var addInput = document.createElement("<input type='checkbox' checked='checked' style='border:none; 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 + "||";
          }
        }  
      } 
    }
  • 相关阅读:
    box-shadow 用法总结
    CSS绘制三角形
    js实现限制容器中字符个数
    解决 IE 或者兼容模式不支持 document.getElementsByClassName() 的方法
    JavaScript获取浏览器高度和宽度值(documentElement,clientHeight,offsetHeight,scrollHeight,scrollTop,offsetParent,offsetY,innerHeight)
    appium-python-api中文文档
    通过adb获取应用的Activity堆栈信息
    小米手机连接adb只显示List of devices attached
    关于如何等待一个元素的出现而不用一些笨拙粗暴的time.sleep()方法
    Appium环境搭建
  • 原文地址:https://www.cnblogs.com/janmson/p/1516073.html
Copyright © 2011-2022 走看看