2011-01-06 2 views
0

모두 안녕하십니까, Microsoft Dynamics 4.0 내에서 다중 선택 확인란 선택 목록을 만들려고합니다. 나는 짐 Wangs 코드를 사용하여 체크 박스를 만들 수 있었다. link text 나는이 스크립트 내에서 내 picklist에있는 값을 넣어야하는지 잘 모르겠다. 그렇다면 어디에 있는지 모른다. 나는 Java Script의 초보자이기 때문에 어떤 필드를 변경해야하는지 (또는 어떤 색이 무엇을 의미하는지) 확실하지 않았습니다. 또한 스크립트를 삽입하고 내 PL 및 PLV 이름을 넣을 때; 내 계정 포럼 화면과 값에서 체크 박스를 볼 수 있지만 저장 및 닫기를 클릭하면 저장되지 않습니다. 위의 링크에서 보이는 것처럼 사진의 한 예가 링크입니다. 내 선택 목록에 나와있는 값은 (Value, Value1, Value2)입니다. 왜냐하면 모든 것이 어디로 갔는지와 스크립트에 있어야하는 값을 파악할 수있는 테스트 였기 때문입니다. 내가 picklist 값을 넣지 않은 코드에서 볼 수 있듯이 이것은 저장 오류를 일으킬 수 있습니다. 나는 무엇을 바꾸고 어디에서 그것을 삽입해야하는지 전혀 모른다. 나는 이것으로 나를 돕는 누군가와 행운이 없었다. 그래서 모든 도움이 크게 감사 할 것입니다. ,MS CRM에서 다중 선택 확인란 선택 목록 저장 ...

다이아몬드

var에 PL = crmForm.all.new_picklist 도와주세요;
var PLV = crmForm.all.new_picklistvalue;
PL.style.display = "none";
PLV.style.display = "none"; var addDiv = document.createElement ("");
PL.parentNode.appendChild (addDiv); (var i = 1; i < PL.options.length; i ++) {var pOption = PL.options [i]; if (! IsChecked ( pOption.text))
var addInput = document.createElement ("");
var addLabel = document.createElement ("");

addLabel.innerText = pOption.text;  var addBr = document.createElement(

"br"); PL.nextSibling.appendChild (addInput); PL.nextSibling.appendChild (addLabel); PL.nextSibling.appendChild (addBr);
} 함수 (pText)
{
에게의 IsChecked 경우 (PLV.value = "!") {
VAR의 PLVT = PLV.value.split ("||"); 위한
(나는 < PLVT.length; VAR I = 1 난 ++) {

경우 (PLVT [I] == pText)
참을 리턴;
}
}
return false; } crmForm.attachEvent ("onsave");
함수 OnSave() {PLV.value = "br"; var getInput = PL.nextSibling.getElementsByTagName ("input"); 위한 (나는 < getInput.length; VAR I = 1 제가 ++) {
경우 (getInput에 [I] .checked를)
{
PLV.value + = getInput에 [I] + .nextSibling.innerText 를 " || ";
}}

답변

0

참조한 코드를 보았습니다.이런 식으로 두 개의 필드를 만드는 아이디어가 마음에 들지 않았습니다. 나는 꽤 잘 작동하는 다음 코드를 생각해 냈다. 다음 코드를 사용하여이 작은 도우미 함수를 모든 crm 4.0 페이지의 일반 js 파일로로드합니다.

다음 코드는 직접 관련이 없습니다. 도우미 기능과 예제 사용법을 자세히 살펴보십시오.

// Get Generic Scripts from server 
try{ 
    var headID = document.getElementsByTagName("head")[0]; 
    var GenericHelpers = document.createElement('script'); 
    GenericHelpers.type = 'text/javascript'; 
    GenericHelpers.src = '/ISV/GenericScripts/Generics.js'; 
    GenericHelpers.onload = scriptLoaded; 
    GenericHelpers.onreadystatechange = function(){if (GenericHelpers.readyState == 'loaded' || GenericHelpers.readyState == 'complete'){scriptLoaded();}}; 
    headID.appendChild(GenericHelpers); 
} 
catch(err){ 
    alert('Failed to attach specific scripts to this form. Please contact IT Support.\n\n Specific Error: ' + err.description); 
} 

function scriptLoaded(){ 
    try{ 
     //all other code... 
    } 
    catch(err){ 
     alert('Form load events failed. Functionality of the form may limited or non-functional. Please contact IT Support.\n\n Specific Error: ' + err.description); 
    } 
}//scriptLoaded() 

코드가 매우 다릅니다. 기본적으로 텍스트 필드가 있고 코드에서 다양한 옵션을 구현합니다. 결국 우리는이 접근법을 모두 함께 사용하지 못했지만 작동하지 않았기 때문에가 아니라 우리가 보여주고 싶었던 다른 것들의 복잡성을 분산 시켰습니다. 대신 iframe에 삽입 된 HTML 페이지를 만들었으며 페이지는 기본적으로 정보를 텍스트 필드로 다시 보냈습니다. 전반적인 최종 목표는 엔티티가 스케줄러 서비스를 구동하는 것이 었습니다.

코드가 generics.js 파일에 남겨 졌기 때문에 작동한다고 가정하지만 필자는이 파일을 검사하고 작성한 이후로 만진 적이 없다고 말할 수는 없습니다. 이메일을 보내더라도 기꺼이 돌아와주십시오.

도우미 기능

function mvHelper(oElement){ 

var divTag = document.createElement("<div id='list_" + oElement.id + "' style='overflow-y:auto; border:1px #6699cc solid; background-color:transparent;' />"); 

this.mvField = oElement; 
this.mvField.style.display = "none"; 
this.mvField.parentNode.appendChild(divTag); 

this.addTickBox = function(str){ 
    var addInput = null; 

    if(oElement.value.indexOf(str)>=0){ 
     addInput = document.createElement("<input checked='true' type='checkbox' title='" + str + "' style='border:none; width:25px; align:left;' />"); 
    } 
    else{ 
     addInput = document.createElement("<input type='checkbox' title='" + str + "' style='border:none; width:25px; align:left;' />"); 
    } 

    var addLabel = document.createElement("<label style='width:65px; align:left;' />"); 

    addLabel.innerText = str; 

    addInput.onclick = function(){ 
     if(this.checked){ 
      oElement.value += str + ','; 
     } 
     else{ 
      oElement.value = oElement.value.replace(str + ',',''); 
     } 
    } 
    divTag.appendChild(addInput); 
    divTag.appendChild(addLabel); 
}//mvHelper(oElement) 

사용 예제

// crmForm.all.new_daysofweek is a text field in crm itself. 
var daysOfWeek = new mvHelper(crmForm.all.new_daysofweek); 
dayOfWeek.addTickBox("Mon"); 
dayOfWeek.addTickBox("Tue"); 
dayOfWeek.addTickBox("Wed"); 
dayOfWeek.addTickBox("Thu"); 
dayOfWeek.addTickBox("Fri"); 
dayOfWeek.addTickBox("Sat"); 
dayOfWeek.addTickBox("Sun"); 
0

그냥 내 다른 게시물을 suppliment하기 위해 (위의 제안하지로 시작 지나치게 포괄적 아니었다). 코드 을 게시 했으므로은이 아닌 텍스트 필드에 정보를 저장합니다. 데이터베이스가 픽업 목록 필드 유형에 다중 값을 보유 할 수 없기 때문에 선택 목록에 저장하는 것은 기술적으로 불가능합니다. 이 코드는 선택 목록을 사용하여 값을 가져 와서 번역하고 체크 상자로 렌더링하지만 옵션을 텍스트 필드에 드롭합니다.

필요에 따라 원하는대로 html 태그로 자신 만의 스타일을 만들 수도 있습니다.

다른 게시물을 보았는데 이것이 코드 작동 방식에 대한 미스 개념이라고 생각한 것 같습니다.