无法获取未定义或空引用的属性“new_textholder”

Unable to get property 'new_textholder' of undefined or null reference

本文关键字:属性 new textholder 引用 获取 未定义      更新时间:2023-09-26

我正在使用我在网上找到的代码将标准选项集字段转换为MS CRM 2015在线中的复选框。它一直给我上述错误。

这是代码:

function MultiPickList3(param1, param2, param3,param4,param5) 
{ 
try 
{ 
var fn = arguments.callee.toString().match(/function's+([^'s'(]+)/);  
if (param1==null || param2==null) 
{ 
alert("Error: Parameter missing. 'n Format: <optionset fieldname> ,  <option value text field> ,  [<option header>], [<select color>]   ,   [<deselect color>] ,  'n ["+"Function="+fn[1]+"]"  ); 
return true; 
} 
var tparamtype=Xrm.Page.data.entity.attributes.get(param1).getAttributeType(); 
if (tparamtype!="optionset") 
  { alert (param1+"(first parameter) should be of type optionset 'n"+"[function="+fn[1]+"]"); 
    return true; 
  } 
var tparamtype=Xrm.Page.data.entity.attributes.get(param2).getAttributeType(); 
if (tparamtype!="memo") 
  { alert (param2+"(second parameter) should be of type memo (text with mutiline) 'n[function="+fn[1]+"]"); 
    return true; 
  } 
var plOptions=param1;       
var plText=param2;     
var plMenuItem="View Selected List"; 
var SelectedList_orig = crmForm.all[plText]; 
var FullList=crmForm.all[plOptions]; 
var SelCtr=-1; 
var new_selColor="orange"; 
var new_deSelColor="white"; 
if (param4!=null) 
    new_selColor=param4; 
if (param5!=null) 
    new_deSelColor=param5; 
var SelectedList =SelectedList_orig.value.split("'r'n"); 
crmForm.all[plText].style.display="none"; 
if(FullList!=null && SelectedList!=null) 
    { 
     initColor(); 
     if (param3!=null && param3!="") 
        { 
             plMenuItem=param3; 
        } 
   else 
       {  
          plMenuItem=FullList.options[0].text; 
           changeColor("grey",0); 
       } 
     for (var ctr=0; ctr<SelectedList.length;ctr++) 
         { 
           selCtr=SelectedIndex(SelectedList[ctr]); 
             if (selCtr >-1) 
               {        
                   changeColor(new_selColor,selCtr); 
                } 
         } 
     } 
function SelectedIndex(selectedText) 
{ 
var FullListText; 
for (var ctr1=0; ctr1<FullList.options.length;ctr1++) 
    { 
      FullListText=FullList.options[ctr1].text; 
      if ( FullListText==selectedText) 
         { 
            return ctr1; 
         } 
     } 
return -2; 
} 
crmForm.all[plOptions].attachEvent('onchange', OnChangePL); 
function OnChangePL()  
{ 
var SelCtr=-1; 
var sel=crmForm.all[plOptions].SelectedText; 
if (sel==plMenuItem) 
return; 
SelCtr=SelectedIndex(sel); 
var SelColor="grey";  
SelColor=crmForm.all[plOptions][SelCtr].style.backgroundColor; 
if (SelColor==new_selColor) 
     { 
       changeColor(new_deSelColor,SelCtr); 
       saveChanges(sel,selCtr,"del"); 
    } 
else 
    { 
       changeColor(new_selColor, SelCtr);              
       saveChanges(sel,selCtr,"add"); 
    } 
} 
function saveChanges(p_selText,p_SelCtr,p_mode) 
{ 
switch(p_mode) 
{ 
    case "add": 
            SelectedList.push(p_selText); 
            break; 
    case "del": 
            for (var ctr2=0;ctr2<SelectedList.length;ctr2++) 
                 { 
                  if (SelectedList[ctr2]==p_selText) 
                       { 
                         SelectedList.splice(ctr2,1); 
                         break; 
                       }  
                  } 
              break; 
} 
Xrm.Page.getAttribute(plText).setValue(SelectedList.join("'r'n"));   
} 
function initColor() 
{ 
      for (var ctr3=0; ctr3<FullList.options.length;ctr3++) 
           {             changeColor(new_deSelColor, ctr3);   } 
} 
function changeColor(newColor, newCtr) 
{ 
      crmForm.all[plOptions][newCtr].style.backgroundColor=newColor; 
} 
} 
catch (e) 
         {  alert (e.description);} 
} 

param2 采用字段"new_textholder",这是一个多行文本字段。它在表单上定义,我已经检查以确保我写得正确。

可能是什么问题?

谢谢!!

此错误可能来自 crmForm.all[plText] 行。 我猜你的组织足够新,以至于不再支持旧的 4.0 api,这意味着 all 对象不再可用,这会给你这个错误(plText 设置为 param2 的值)。 您也许可以修改此代码以处理您的 2015 表单,但我目前没有可用的 2015 组织,所以我不能肯定地说。