none
Filtro no Lookup CRM 4.0 RRS feed

  • Pergunta

  • Olá pessoal, na entidade Conta quero fazer a seguinte customização:

    Ao escolher uma opção no campo Conta Primária, o campo Contato Primário deverá filtrar somente os contatos referentes ao campo Conta Primária.

    Bom isso todo mundo já sabe que se resolve com uma solução não suportada, então estou me baseando neste post

    http://crm.georged.id.au/post/2008/02/16/Filtering-lookup-data-in-CRM-4.aspx

    Meu código ficou assim no evento OnChange do campo Conta Primária:

    //TENTATIVA PARA CARREGAR CONTATO PRIMÁRIO DA CONTA
    var field =crmForm.all.primarycontactid;
    if (crmForm.ObjectId == null)
    { 
      // Disable lookup for new account record as there can be no contacts 
      field.Disabled = true;
     } 
    else 
    { 
     
     field = crmForm.all.primarycontactid
      alert(field.DataValue) //aqui busca um valor nulo
    
      // Ensure that search box is not visible in a lookup dialog
      field.lookupbrowse = 1; 
      alert('fora if valor accountid = ' + crmForm.AccountId.DataValue )
       
      // Pass fetch xml through search value parameter 
      field.AddParam("search", 
       "<fetch mapping='logical'><entity name='contact'>" 
      + "<filter><condition attribute='accountid' operator='eq' value='" 
      + crmForm.AccountId 
      + "' /></filter></entity></fetch>"); 
    }

     Percebi que primarycontactid e accountid   sempre retornam NULO ou UNDEFINID, gostaria de saber o que esta errado e como resolvo este problema????

    Obrigado pela atenção.

    terça-feira, 11 de maio de 2010 15:39

Respostas

  • Bo tarde,

     

    Eu tive de fazer um filtro no lookup para trazr somente os dados pertinentes do estado, espeto que ajude

    OnLoad

    /*Executando a função no onchange do campo Pais onde vai aplicar o material */
    crmForm.all.new_paisondevaiaplicaromaterialid.FireOnChange();
    crmForm.all.new_estadoondevaiaplicaromaterialid.FireOnChange();
    if(crmForm.all.new_paisondevaiaplicaromaterialid.DataValue != null)
    {
    crmForm.all.new_estadoondevaiaplicaromaterialid.Disabled = false;
    }
    else{crmForm.all.new_estadoondevaiaplicaromaterialid.Disabled = true;}

    if(crmForm.all.new_estadoondevaiaplicaromaterialid.DataValue != null)
    {
    crmForm.all.new_cidadeondevaiaplicaromaterialid.Disabled = false;
    }
    else{crmForm.all.new_cidadeondevaiaplicaromaterialid.Disabled = true;}


    OnChange do campo


    /*Filtrando os valores para o preenchimento do campo estado de acordo com o país escolhido*/
    if (crmForm.all.new_paisondevaiaplicaromaterialid.DataValue != null)
    {
        crmForm.all.new_estadoondevaiaplicaromaterialid.Disabled = false;
        SetarNovoFiltroEstado();
    }
    function SetarNovoFiltroEstado()
    {
        var searchVal = crmForm.all.new_paisondevaiaplicaromaterialid.DataValue[0].name;
       if (searchVal != null)
       {
          searchVal = searchVal.replace("&", "%26");
          crmForm.all.new_estadoondevaiaplicaromaterialid.additionalparams = "search=" + searchVal;
        }
    }


    Tiago Henrique Consultor de Implantação Microssoft Dynamics CRM
    • Sugerido como Resposta Tiago H quinta-feira, 24 de junho de 2010 17:55
    • Marcado como Resposta Carlos Amorim Junior sexta-feira, 25 de junho de 2010 22:04
    quinta-feira, 24 de junho de 2010 17:55