none
Como Fazer um Picklist condicional RRS feed

  • Pergunta

  • Gostaria de Fazer um Picklist condicional da seguinte forma

    Conforme a opção selecionada no 1o. Pick list, ele exibira uma lista diferente no 2o.Picklist

    1o. Picklist   | 2o. Picklist

    Plataforma   | Familia

    Lion-1          | Chave óticas

                        | Transpoders

    ______________________________________

    Lion-2  | PCI

                         | CI

                         | Placas

    quinta-feira, 31 de julho de 2014 14:26

Respostas

  • Boas Denilson,

    Eu tenho duas abordagens:

    Pelo exemplo do SDK está um exemplo de como implementar e vem a solução e tudo. Procura nesta pasta: \sdk\samplecode\js\formscripts e está explicado neste site.

    Ou realizo eu mesmo o código:

    var optionsetFamilia = Xrm.Page.ui.controls.get("familia");
        var options = optionsetControl.getAttribute().getOptions();
    
         var platText = Xrm.Page.getAttribute("plataforma").getText();
        if (platText == "Lion-1") {
            optionsetControl.clearOptions();
            for (var i = 0; i < options.length - 1; i++) {
                if (i == 0 || i == 1) {
                    optionsetFamilia.addOption(options[i]);
                }
            }
        }

    O exemplo é só para teres uma ideia do que podes fazer, por exemplo eu muitas vezes crio uma entidade imagina plataformaVSfamilia, onde coloco as duas option sets (estão como globais para estarem nesta entidade e depois no formulário), nesta nova entidade adiciono todas as combinações possíveis. Depois via por exemplo odata consigo saber que quando eu selecciono uma plataforma quais as famílias possíveis e utilizo a mesma lógica do código acima mas dinâmico.

    PS: Denilson eu vejo que não colocas como resposta nenhuma das sugestões e marcas como útil. Quer dizer que muitas vezes optas por outra solução, seria bom saber qual é essa solução, senão pedia-te que colocasses como uma resposta confirmada, assim quem tiver a mesma dúvida terá mais certezas que realmente se funciona.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como úti


    Pedro Azevedo Crm Specialist 4.0\2011

    quinta-feira, 31 de julho de 2014 15:37

Todas as Respostas

  • Boas Denilson,

    Eu tenho duas abordagens:

    Pelo exemplo do SDK está um exemplo de como implementar e vem a solução e tudo. Procura nesta pasta: \sdk\samplecode\js\formscripts e está explicado neste site.

    Ou realizo eu mesmo o código:

    var optionsetFamilia = Xrm.Page.ui.controls.get("familia");
        var options = optionsetControl.getAttribute().getOptions();
    
         var platText = Xrm.Page.getAttribute("plataforma").getText();
        if (platText == "Lion-1") {
            optionsetControl.clearOptions();
            for (var i = 0; i < options.length - 1; i++) {
                if (i == 0 || i == 1) {
                    optionsetFamilia.addOption(options[i]);
                }
            }
        }

    O exemplo é só para teres uma ideia do que podes fazer, por exemplo eu muitas vezes crio uma entidade imagina plataformaVSfamilia, onde coloco as duas option sets (estão como globais para estarem nesta entidade e depois no formulário), nesta nova entidade adiciono todas as combinações possíveis. Depois via por exemplo odata consigo saber que quando eu selecciono uma plataforma quais as famílias possíveis e utilizo a mesma lógica do código acima mas dinâmico.

    PS: Denilson eu vejo que não colocas como resposta nenhuma das sugestões e marcas como útil. Quer dizer que muitas vezes optas por outra solução, seria bom saber qual é essa solução, senão pedia-te que colocasses como uma resposta confirmada, assim quem tiver a mesma dúvida terá mais certezas que realmente se funciona.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como úti


    Pedro Azevedo Crm Specialist 4.0\2011

    quinta-feira, 31 de julho de 2014 15:37
  • Implementei a sua 2a. opção, e aparece a seguinte mensagem

    erro

    quinta-feira, 31 de julho de 2014 19:50
  • Boas Denilson,

    Peço desculpa mas o meu código tem um erro é o que dá escrever o código directamente aqui :D

    Em vez do optionsetControl coloca optionsetFamilia.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    quinta-feira, 31 de julho de 2014 22:54
  • E complementando o que o Pedro falou, acho que falta a outra parte caso Lion-2
    var optionsetFamilia = Xrm.Page.ui.controls.get("familia");
    var options = optionsetFamilia.getAttribute().getOptions();
    
    var platText = Xrm.Page.getAttribute("plataforma").getText();
        if (platText == "Lion-1") {
            optionsetFamilia.clearOptions();
            for (var i = 0; i < options.length - 1; i++) {
                if (i == 0 || i == 1) {
                    optionsetFamilia.addOption(options[i]);
                }
            }
        }
    	if (platText == "Lion-2") {
            optionsetFamilia.clearOptions();
            for (var i = 0; i < options.length - 1; i++) {
                if (i == 2 || i == 3 || i == 4) {
                    optionsetFamilia.addOption(options[i]);
                }
            }
        }

    • Sugerido como Resposta Thiago_Lima sexta-feira, 22 de agosto de 2014 19:55
    sexta-feira, 22 de agosto de 2014 19:55