none
Usando a posição de uma lista pela seleção de um combobox RRS feed

  • Pergunta

  • Estou com seguinte Problema.

    carrego um lista para dentro de 02 combobox que de acordo com a seleção carrega outros combobox porem gostaria de fazer esta filtragem pela posição do elemento na lista.  o problema é que quando seleciono pelo evento_click acaba tendo um erro na hora de carregar os demais combobox se a seleção for feita pelos combo que contem a sigla.

    exemplo: 

     private void cb_n_mat_SelectedIndexChanged(object sender, EventArgs e)
            {

                /*ANSI B16.11 TAMPAO*/
                string id_n_mat = cb_n_mat.Text;

                   //("CC" == id_n_mat | "EF" == id_n_mat | "CF" == id_n_mat | "AB" == id_n_mat | "EC" == id_n_mat | "OE" == id_n_mat)
                if ("PVC ASTM D1784 CL12454" == id_n_mat | "ASTM A182 GR F316L" == id_n_mat | "ASTM A182 GR F304L" == id_n_mat | "ASTM A105" == id_n_mat | "ASTM A182 GR F316" == id_n_mat | "ASTM A182 F55 UNS S32760" == id_n_mat)
                { Carregar_Tampao_ND_ANSI_B16_11(); }

                        //("EZ" == id_n_mat | "CY" == id_n_mat | "AK" == id_n_mat | "CX" == id_n_mat | "OI" == id_n_mat | "EY" == id_n_mat)
                else if ("ASTM A403 GR WP316L" == id_n_mat | "ASTM A403 WP304" == id_n_mat | "ASTM A234 GR WPB" == id_n_mat | "ASTM A403 GR WP304L" == id_n_mat | "ASTM A815 UNS32760" == id_n_mat | "ASTM A403 GR WP316" == id_n_mat)
                { Carrega_Tampao_ND_ANSI_B16_9(); }

                else if ("GE" == id_n_mat) Carrega_Tampao_ND_ANSI_B16_3();// CHAMA OUTRA LISTA COM VALORES DIFERENTES

                else if ("KB" == id_n_mat)
                {
                    IList<MaterialDGT> List_ND = new List<MaterialDGT>();
                    List_ND.Add(new MaterialDGT { ID_N_DIMEN = "AE", DESC_N_DIM_PT = "ASTM D2467", DESC_N_DIM_US = "ASTM D2467", DESC_N_DIM_SPN = "" });
                    cb_n_dim.DisplayMember = "DESC_N_DIM_PT";
                    cb_n_dim.DataSource = List_ND;
                    cb_id_n_dim.DisplayMember = "ID_N_DIMEN";
                    cb_id_n_dim.DataSource = List_ND;

                    IList<MaterialDGT> List_DIM = new Caps_Tampoes_Bujoes_BLL().Carrega_DIM_Tampao_AE(MAT);
                    cb_id_dim.DisplayMember = "ID_DIM";
                    cb_id_dim.DataSource = List_DIM;
                    cb_dim.DisplayMember = "DES_DIM_PT";
                    cb_dim.DataSource = List_DIM;
                    
                    IList<MaterialDGT> List_SCH = new Caps_Tampoes_Bujoes_BLL().Carrega_SC_Bujao(MAT);
                    this.cb_id_sc.DisplayMember = "id_sc";
                    this.cb_id_sc.DataSource = List_SCH;
                    this.cb_sch.DisplayMember = "des_sch_pt";
                    this.cb_sch.DataSource = List_SCH;
                    
                    IList<MaterialDGT> List_Ext = new List<MaterialDGT>();
                    List_Ext.Add(new MaterialDGT { ID_EXT = "L", DES_EXT_PT = "EXTREMIDADE ENCAIXE SOLDA F", DES_EXT_US = "SOCKET WELDING ENDS F", DES_EXT_SPN = "" });
                    List_Ext.Add(new MaterialDGT { ID_EXT = "S", DES_EXT_PT = "EXTREMIDADE ROSCADA NPT F", DES_EXT_US = "THREADED ENDS NPT F", DES_EXT_SPN = "" });

                    this.cb_id_ext.DisplayMember = "id_ext";
                    this.cb_id_ext.DataSource = List_Ext;
                    this.cb_ext.DisplayMember = "des_ext_pt";
                    this.cb_ext.DataSource = List_Ext;
                    
                    IList<MaterialDGT> List_INS = new Caps_Tampoes_Bujoes_BLL().Carrega_INS_Bujao(MAT);
                    this.cb_id_ins.DisplayMember = "ID_INSP";
                    this.cb_id_ins.DataSource = List_INS;
                    this.cb_ins.DisplayMember = "des_ins_pt";
                    this.cb_ins.DataSource = List_INS;
                    
                }


            }

     public IList<MaterialDGT> Carrega_NM_Tampao(MaterialDGT MAT)
            {
                List<MaterialDGT> list_NM = new List<MaterialDGT>();
                list_NM.Add(new MaterialDGT { ID_N_MAT = "CC", DESC_N_MAT_PT = "ASTM A182 GR F304", DESC_N_MAT_US = "ASTM A182 GR F304", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "EF", DESC_N_MAT_PT = "ASTM A182 GR F316L", DESC_N_MAT_US = "ASTM A182 GR F316L", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "CF", DESC_N_MAT_PT = "ASTM A182 GR F304L", DESC_N_MAT_US = "ASTM A182 GR F304L", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "AB", DESC_N_MAT_PT = "ASTM A105", DESC_N_MAT_US = "ASTM A105", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "EC", DESC_N_MAT_PT = "ASTM A182 GR F316", DESC_N_MAT_US = "ASTM A182 GR F316", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "OE", DESC_N_MAT_PT = "ASTM A182 F55 UNS S32760", DESC_N_MAT_US = "ASTM A182 F55 UNS S32760", DESC_N_MAT_SPN = "" });

                /*ANSI B16.9*/
                list_NM.Add(new MaterialDGT { ID_N_MAT = "EZ", DESC_N_MAT_PT = "ASTM A403 GR WP316L", DESC_N_MAT_US = "ASTM A403 GR WP316L", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "CY", DESC_N_MAT_PT = "ASTM A403 WP304", DESC_N_MAT_US = "ASTM A403 WP304", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "AK", DESC_N_MAT_PT = "ASTM A234 GR WPB", DESC_N_MAT_US = "ASTM A234 GR WPB", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "CX", DESC_N_MAT_PT = "ASTM A403 GR WP304L", DESC_N_MAT_US = "ASTM A403 GR WP304L", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "OI", DESC_N_MAT_PT = "ASTM A815 UNS32760", DESC_N_MAT_US = "ASTM A815 UNS32760", DESC_N_MAT_SPN = "" });
                list_NM.Add(new MaterialDGT { ID_N_MAT = "EY", DESC_N_MAT_PT = "ASTM A403 GR WP316", DESC_N_MAT_US = "ASTM A403 GR WP316", DESC_N_MAT_SPN = "" });

                list_NM.Add(new MaterialDGT { ID_N_MAT = "GE", DESC_N_MAT_PT = "ASTM A197", DESC_N_MAT_US = "ASTM A197", DESC_N_MAT_SPN = "" });

                list_NM.Add(new MaterialDGT { ID_N_MAT = "KB", DESC_N_MAT_PT = "PVC ASTM D1784 CL12454", DESC_N_MAT_US = "PVC ASTM D1784 CL12454", DESC_N_MAT_SPN = "" });

                

                return list_NM;
            }

    quinta-feira, 16 de junho de 2016 12:48

Respostas

  • eu dessa forma e que achei mais facil e util

            private void lookUpEdit3_MouseDown(object sender, MouseEventArgs e)
            {
                var codigo = Conexao.Conexao.Buscar_Codigo_Tabela("ID_VERSAOFRENTE", "VERSAO_FRENTE", "VERSAOFRENTE", lookUpEdit2.Text);
                if (!string.IsNullOrWhiteSpace(codigo))
                {
                    Conexao.Conexao.Carregar_Combobox(lookUpEdit3,
                        $"SELECT ID_VERSAONUCLEO, VERSAONUCLEO FROM VERSAO_NUCLEO WHERE ATIVO = 'SIM' AND ID_VERSAOFRENTE = '{codigo}' ORDER BY VERSAONUCLEO ASC", "ID_VERSAONUCLEO", "VERSAONUCLEO");
                }
                else
                {
                    XtraMessageBox.Show("Selecione a versão do frente para poder selecionar a versão do núcleo.", "Click Soluções", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

    terça-feira, 26 de julho de 2016 18:59

Todas as Respostas

  • Boa tarde Robert,

    Você poderia por gentileza postar a mensagem de erro?

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 21 de junho de 2016 19:33
    Moderador
  • Boa tarde Robert,

    Você poderia por gentileza postar a mensagem de erro?

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    Bom Dia, Na verdade não gera erro, o problema é que a condição do If está atrelado  no Combobox que tem a Sigla do material, está sigla é um Código único,  o que o evento é disparado pelo combobox da descrição que possui três idiomas porem só mostro um de cada vez. o problema e de fazer a filtragem no campo da descrição que recebe dois mais dois idiomas.    
    quarta-feira, 22 de junho de 2016 12:13
  • Boa tarde Robert,

    Você poderia tentar estreitar ainda mais onde está o problema? O que está dando errado é que para as duas outras línguas não está retornando nada no campo descrição? 

    Obrigado.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 23 de junho de 2016 18:59
    Moderador
  • Bom dia Robson, o problema é o seguinte, observe a imagem que eu coloquei a cima, 

    de acordo com a seleção  escolho uma SUBFAMILIA  , que carrega o TIPO

    então de acordo com a seleção do Campo TIPO ele carrega todos os demais campos, e monta um determinado tipo de material.

    A ideia é montar diversos tipos diferente de material . porem tem um porem de acordo com a seleção da NORMA MATERIAL, Tem que carregar NORMAS DIMENSIONAL ,DIMENSÕES,SCH,EXTREMIDADES,INSPEÇÕES,  especifica a norma material selecionada.

    porque existe vários tipo de tubos exemplo: De PVC, Aço entre outro .

     O problema ocorre quando começo  a fazer a montagem deste material. estou fazendo ao filtragem do das condições "if" e "else if ". nos campos que tem a sigla. só que caso o usuário tente escolher o item na descrição acaba ocorrendo um atraso na hora de carregar o campo seguinte. e se fizer esta filtragem pelo campo de descrição terei que refazer todo o código para os outros dois idiomas já que algumas medida e especificação tem alguma diferença entre elas de acordo com o idioma. em relação ao outros idiomas. é simples, de acordo com o radiobutton selecionado, o campo descrição recebe a lista  


    quinta-feira, 23 de junho de 2016 21:24
  • Bom dia,

    Eu indicaria você usar case ao invés de IF e outra coisa porque você não carrega o combobox quando clicar em cima dele.

     private void lookUpEdit1_MouseDown(object sender, MouseEventArgs e)
            {
                lookUpEdit1.Properties.DataSource = Util.Listar_Enum((typeof(Enum.Enum_Ramo_Atividade)));
                lookUpEdit1.Properties.DisplayMember = "Value";
                lookUpEdit1.Properties.ValueMember = "Key";
            }

    segue um exemplo.

    terça-feira, 26 de julho de 2016 12:26
  • Bom dia,

    Eu indicaria você usar case ao invés de IF e outra coisa porque você não carrega o combobox quando clicar em cima dele.

     private void lookUpEdit1_MouseDown(object sender, MouseEventArgs e)
            {
                lookUpEdit1.Properties.DataSource = Util.Listar_Enum((typeof(Enum.Enum_Ramo_Atividade)));
                lookUpEdit1.Properties.DisplayMember = "Value";
                lookUpEdit1.Properties.ValueMember = "Key";
            }

    segue um exemplo.

    Bom dia, muito obrigado vou tentar e dou feedback.

    Então sobre carrega pelo combobox ate carrega, porem o que acontece é um delay na hora de carregar.

    Pq se fizer a condição no campo da descrição  funciona certo porem este form apresenta mais dois idiomas,e terei que criar os mesmo código para os outros dois.

    Então uso o campo de id que é um campo único independente do idioma. se você faz a escolha por esse campo também funciona certo, porem o usuário vai mesmos na descrição, e é ai onde ocorre o erro.   

     
    terça-feira, 26 de julho de 2016 14:03
  • eu dessa forma e que achei mais facil e util

            private void lookUpEdit3_MouseDown(object sender, MouseEventArgs e)
            {
                var codigo = Conexao.Conexao.Buscar_Codigo_Tabela("ID_VERSAOFRENTE", "VERSAO_FRENTE", "VERSAOFRENTE", lookUpEdit2.Text);
                if (!string.IsNullOrWhiteSpace(codigo))
                {
                    Conexao.Conexao.Carregar_Combobox(lookUpEdit3,
                        $"SELECT ID_VERSAONUCLEO, VERSAONUCLEO FROM VERSAO_NUCLEO WHERE ATIVO = 'SIM' AND ID_VERSAOFRENTE = '{codigo}' ORDER BY VERSAONUCLEO ASC", "ID_VERSAONUCLEO", "VERSAONUCLEO");
                }
                else
                {
                    XtraMessageBox.Show("Selecione a versão do frente para poder selecionar a versão do núcleo.", "Click Soluções", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

    terça-feira, 26 de julho de 2016 18:59