Dynamische Picklist in MyCRM 2011

Bild Microsoft Dynamics CRM 2011

Dynamische Picklist in MyCRM 2011

Beitragvon linux » 11. Mai 2011 15:48

Hallo zusammen,

ich versuche grade eine dynamische Picklist zwischen den Feld statuscode in der Entität Verkaufschance und einer weitern
Pickliste erstellen.

Im Blog: dynamiccrm, habe ich folgenden Code gefunden:


function firstPickListOnChange()
{
var firstPickListValue = Xrm.Page.getAttribute("statuscode").getValue();
var secondPickListControl = Xrm.Page.ui.controls.get("new_XXX");
var secondPickListOptions = secondPickListControl.getAttribute().getOptions();
secondPickListControl.clearOptions();

switch(firstPickListValue)
{
case 100000001:
secondPickListControl.addOption(secondPickListOptions [0], 0);
secondPickListControl.addOption(secondPickListOptions [1], 1);
secondPickListControl.addOption(secondPickListOptions [2], 2);
break;

case 100000002:
secondPickListControl.addOption(secondPickListOptions [3], 0);
secondPickListControl.addOption(secondPickListOptions [4], 1);
secondPickListControl.addOption(secondPickListOptions [5], 2);
break;

}
}

Dieser Code Funktioniert zwar aber leider löscht dieser nach der Auswahl des zweiten Picklistwert diesen wieder herraus bzw. zeigt diesen nicht mehr an.
Hat jemand eine Idee wie man diesen Code modifizieren kann so das der ausgewählte Wert weiterhin sichtbar ist bzw. ein anderes Codebeispiel für eine Dynamisches Picklist
linux
 
Beiträge: 28
Registriert: 11. August 2010 14:07
Realer Name: Patrick
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM
Microsoft Dynamics Version: 4.0

Re: Dynamische Picklist in MyCRM 2011

Beitragvon Michael Sulz » 11. Mai 2011 16:14

Hallo Patrick,

ich kann nicht erkennen, warum dieser Code die 2. Pickliste nach der Auswahl eines Eintrages wieder löschen sollte.

Kann es sein, das da noch ein anderes JavaScript auf diese Pickliste geht oder du den Code im OnChange und OnSave hinterlegt hast?
GruĂź, Michael Sulz
Mein Blog
Xing LinkedIn Facebook Twitter

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.

Wie man Fragen richtig stellt
Benutzeravatar
Michael Sulz
Microsoft Partner
Microsoft Partner
 
Beiträge: 4939
Registriert: 9. September 2009 17:41
Wohnort: MĂĽnster
Realer Name: Michael Sulz
Arbeitsort: MĂĽnster
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM

Re: Dynamische Picklist in MyCRM 2011

Beitragvon linux » 12. Mai 2011 09:54

Hallo Michael,

Nein, ich habe kein JavaScript noch auf dieser Picklist hinterlegt. Aber ich habe den Fehler gefunden so das das Script erst einmal funktioniert. Der Fehler war das ich bei der zweiten Picklist ebenfalls im Ereignishandler ebenfall auf das Script verwiesen hab.

Nun habe ich aber das Problem noch, das beim Erstellen einer VC nicht mehr der voreingestellte Standartwert in der zweiten Picklist angezeigt wird. In der Version 4.0 hatte ich für die abhänige Picklist den beigefügten Code benutzt den ich aber nicht für die Version 2011 aufgrund des Arrays umgewandelt bekomme. (auch nicht mit den JavaScript Converter ;-))


Code: Alles auswählen
 

Array.prototype.Contains = function(o)
{
   var iLength = this.length;
   
   for (var i = 0; i < iLength; i++)
   {
      if (o == this[i])
      {
         return true;
      }
   }
   
   return false;
};

// This is the main function that will filter the picklists
crmForm.FilterPicklist = function x()
{
   var oVertriebsphase = crmForm.all.statuscode;
   var oWahrscheinlichkeit = crmForm.all.new_closeprobability;
   
   if (oVertriebsphase.DataValue == null)
   {
      oWahrscheinlichkeit.DataValue = null;
      oWahrscheinlichkeit.ForceSubmit = true;      
      oWahrscheinlichkeit.Disabled = true;   
      
      
      return;
   }
   
   
   var oTempArray = new Array();
   
   var iLength = oWahrscheinlichkeit.originalPicklistOptions.length;
   
   var aCurrentType = new Array();      
   
   
switch (oVertriebsphase.DataValue)
{
case "1":
aCurrentType = new Array(8,9,1,2,3,4,5);
break;
case "2":
aCurrentType = new Array(8,9,1,2,3,4,5);
break;
case "200000":
aCurrentType = new Array(8,9,1,2,3,4,5);
break;
case "200001":
aCurrentType = new Array(8,9,1,2,3,4,5);
break;
case "200002":
aCurrentType = new Array(8,9,1,2,3,4,5);
break;
case "200003":
aCurrentType.push(5);
break;
case "200005":
aCurrentType.push(6);
break;
case "3":
aCurrentType.push(7);
break;
case "5":
aCurrentType.push(8);
break;
case "4":
aCurrentType.push(8);
break;
}

   
   for (var i = 0; i < iLength; i++)
   {      
      if (aCurrentType.Contains(oWahrscheinlichkeit.originalPicklistOptions[i].DataValue))
      {
         oTempArray.push(oWahrscheinlichkeit.originalPicklistOptions[i]);
      }
   }
   
   oWahrscheinlichkeit.Options = oTempArray;
   
   if (oTempArray.length > 0)
   {      
      oWahrscheinlichkeit.Disabled = false;      
   }      
   else
   {
      oWahrscheinlichkeit.DataValue = null;
      oWahrscheinlichkeit.ForceSubmit = true;      
      oWahrscheinlichkeit.Disabled = true;
   }   
}

var CRM_FORM_TYPE_CREATE = 1;
var CRM_FORM_TYPE_UPDATE = 2;

switch (crmForm.FormType)
{   
   case CRM_FORM_TYPE_CREATE://CREATE_FORM - try these and blow away the vars above
   case CRM_FORM_TYPE_UPDATE://UPDATE_FORM
      
      var oWahrscheinlichkeit = crmForm.all.new_closeprobability;
      
      oWahrscheinlichkeit.originalPicklistOptions = oWahrscheinlichkeit.Options;      

      if (crmForm.all.statuscode.DataValue == null)
      {
         oWahrscheinlichkeit.Disabled = true;
      }
      else
      {               
         var iPicklistValue = oWahrscheinlichkeit.DataValue;
         crmForm.FilterPicklist();
         oWahrscheinlichkeit.DataValue = iPicklistValue;               
      }

   break;
}
linux
 
Beiträge: 28
Registriert: 11. August 2010 14:07
Realer Name: Patrick
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM
Microsoft Dynamics Version: 4.0

Re: Dynamische Picklist in MyCRM 2011

Beitragvon Michael Sulz » 12. Mai 2011 10:23

Hallo Patrick,

Nein, ich habe kein JavaScript noch auf dieser Picklist hinterlegt. Aber ich habe den Fehler gefunden so das das Script erst einmal funktioniert. Der Fehler war das ich bei der zweiten Picklist ebenfalls im Ereignishandler ebenfall auf das Script verwiesen hab.

Das meinte ich :-)

Nun habe ich aber das Problem noch, das beim Erstellen einer VC nicht mehr der voreingestellte Standartwert in der zweiten Picklist angezeigt wird. In der Version 4.0 hatte ich für die abhänige Picklist den beigefügten Code benutzt den ich aber nicht für die Version 2011 aufgrund des Arrays umgewandelt bekomme.

Ich habe mir den Code jetzt nicht im Detail angesehen, aber ist denn dein Defaultwert auch noch in den Einträgen, die nach dem Filtern in der Pickliste verbleiben?
Wenn selbst der JavaScript Converter das Sript nicht umwandeln kann, wĂĽrde ich vermuten, das diese Funktion nicht mehr zur VerfĂĽgung steht.
GruĂź, Michael Sulz
Mein Blog
Xing LinkedIn Facebook Twitter

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.

Wie man Fragen richtig stellt
Benutzeravatar
Michael Sulz
Microsoft Partner
Microsoft Partner
 
Beiträge: 4939
Registriert: 9. September 2009 17:41
Wohnort: MĂĽnster
Realer Name: Michael Sulz
Arbeitsort: MĂĽnster
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM

Re: Dynamische Picklist in MyCRM 2011

Beitragvon linux » 13. Mai 2011 09:46

Danke,

Ich bin weg von meine ersten Lösung da man mit dieser keinen Wert der zweiten Picklist doppelt vergeben kann.

Diese Lösung finde ich besser aber leider wir hier ebenfalls immer in der zweiten Liste keine default-Wert der zweiten Picklist gesetzt sondern eine lehres Auswahlfeld immer zuerst angezeigt.

http://www.madronasg.com/blog/dependent-option-sets-crm-2011



Danke GruĂź
linux
 
Beiträge: 28
Registriert: 11. August 2010 14:07
Realer Name: Patrick
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM
Microsoft Dynamics Version: 4.0

Re: Dynamische Picklist in MyCRM 2011

Beitragvon Michael Sulz » 13. Mai 2011 10:19

Hallo Patrick,

Ich bin weg von meine ersten Lösung da man mit dieser keinen Wert der zweiten Picklist doppelt vergeben kann.

Warum soll das nicht gehen? Folgendes Beispiel sollte funktionieren.

switch(firstPickListValue)
{
case 100000001:
secondPickListControl.addOption(secondPickListOptions [0], 0);
secondPickListControl.addOption(secondPickListOptions [1], 1);
secondPickListControl.addOption(secondPickListOptions [2], 2);
secondPickListControl.addOption(secondPickListOptions [4], 3);
break;

case 100000002:
secondPickListControl.addOption(secondPickListOptions [3], 0);
secondPickListControl.addOption(secondPickListOptions [4], 1);
secondPickListControl.addOption(secondPickListOptions [5], 2);
break;

Diese Lösung finde ich besser aber leider wir hier ebenfalls immer in der zweiten Liste keine default-Wert der zweiten Picklist gesetzt sondern eine lehres Auswahlfeld immer zuerst angezeigt.

Da es sich um einen Blog-Artikel handelt wĂĽrde ich einfach den Verfasser des Blogartikels fragen.
GruĂź, Michael Sulz
Mein Blog
Xing LinkedIn Facebook Twitter

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.

Wie man Fragen richtig stellt
Benutzeravatar
Michael Sulz
Microsoft Partner
Microsoft Partner
 
Beiträge: 4939
Registriert: 9. September 2009 17:41
Wohnort: MĂĽnster
Realer Name: Michael Sulz
Arbeitsort: MĂĽnster
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM

Re: Dynamische Picklist in MyCRM 2011

Beitragvon linux » 16. Mai 2011 13:03

Ja, dies geht aber dann ist bei der Auswahl in der zweiten Picklist dann kein Standartwerte gesetzt sondern das Feld wir leer angezeigt.

GruĂź Patrick
linux
 
Beiträge: 28
Registriert: 11. August 2010 14:07
Realer Name: Patrick
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM
Microsoft Dynamics Version: 4.0

Re: Dynamische Picklist in MyCRM 2011

Beitragvon Michael Sulz » 16. Mai 2011 13:18

Hallo Patrick,

warum setzt du den Value des OptionSets nicht einfach so?

secondPickListControl.setValue(parseInt(2));
GruĂź, Michael Sulz
Mein Blog
Xing LinkedIn Facebook Twitter

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.

Wie man Fragen richtig stellt
Benutzeravatar
Michael Sulz
Microsoft Partner
Microsoft Partner
 
Beiträge: 4939
Registriert: 9. September 2009 17:41
Wohnort: MĂĽnster
Realer Name: Michael Sulz
Arbeitsort: MĂĽnster
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics CRM


ZurĂĽck zu CRM 2011

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast