none
Filtrando campo dentro do dropbox RRS feed

  • Pergunta

  • Boa Tarde. estou com a seguinte dificuldade.

    estou apontando uma lista de material dentro de varios  combobox porem ele mostra todos os registros na ordem de criação, estou tentando realizar uma filtragem para ele mostra somente campos não repetidos.  igual quando você escolhe uma cidade e o próximo 

    combobox te retorna todas as cidades referente a aquela cidade. e não as cidades de todos estados.

    se alguém tiver uma dica ficarei muito agradecido.

    quinta-feira, 28 de abril de 2016 17:01

Respostas

  • Acredito que não entendi seu problema.  O problema é só no preenchimento dos "ComboBox" que possui registros duplicados?
    Se for isso vai resolver o seu problema, segue o exemplo do MaterialGrupo. Você vai precisar tocrar o "NomeDoAtributo' pela descrição que vai aparecer. Exemplo:  "x.grupoDescricao";
    IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
    lstMatGR = new materialBLL().cargaGrupo();
    var comboCargas = lstMatGR.Select(x => x.NomeDoAtributo).Distinct().ToList();
    this.cb_id_gr.DisplayMember = "ID_GR";
    this.cb_id_gr.DataSource = comboCargas;
    Att,

    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Bom estou tentando realizar uma filtragem dentro dos combo Box. utilizado o lista que eu carrego no datagredView

    mas acho que o problema esta na logica.

     
    • Marcado como Resposta Robert Sancts sexta-feira, 29 de abril de 2016 16:32
    sexta-feira, 29 de abril de 2016 14:55

Todas as Respostas

  • Boa tarde,

    Poderia dizer ou mostrar o código de como preenche o combobox ?

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    quinta-feira, 28 de abril de 2016 17:13
  •      Boa tarde Silvaney

    é carregado uma stored Procedure com INNER JOIN em todas as Tabelas para carregar o material.
            private void carregaSubfamilia()
            {
               

                IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
                lstMatGR = new materialBLL().cargaGrupo(); 
                this.cb_id_gr.DisplayMember= "ID_GR";
                this.cb_id_gr.DataSource=lstMatGR;

    //   PEGA APENAS O QUE TABELA SUBFAMILIA

                IList<MaterialDGT> lstMatFM = new List<MaterialDGT>();
                lstMatFM = new materialBLL().cargaFamilia();
                this.cb_id_F.DisplayMember = "id_f";
                this.cb_id_F.DataSource = lstMatFM;
                this.cb_familia.DisplayMember = "FAMILIA";
                this.cb_familia.DataSource = lstMatFM;
                

    //   PEGA APENAS O QUE TABELA SUBFAMILIA
                IList<MaterialDGT> lstMatSB = new List<MaterialDGT>();
                lstMatSB = new materialBLL().cargaSubfamilia();
                this.cb_id_sf.DisplayMember = "ID_SF";
                this.cb_id_sf.DataSource = lstMatSB;
                this.cb_subfamilia.DisplayMember = "SUBFAMILIA";
                this.cb_subfamilia.DataSource = lstMatSB;


    //PEGA A LISTA  DE MATERIAL A MESMA QUE POPULA O DATAGRIDVIEW
                IList<MaterialDGT> lstMat = new List<MaterialDGT>();
                lstMat = new materialBLL().cargaMaterial();


                this.cb_des_tipo.DisplayMember = "DESC_TIPO_PT";
                this.cb_des_tipo.DataSource = lstMat;

                this.cb_desc_n_material.DisplayMember = "DESC_N_MAT_PT";
                this.cb_desc_n_material.DataSource = lstMat;

                this.cb_desc_n_dim.DisplayMember = "DESC_N_DIM_PT";
                this.cb_desc_n_dim.DataSource = lstMat;

                this.cb_desc_dim.DisplayMember = "DES_DIM_PT";
                this.cb_desc_dim.DataSource = lstMat;

                this.cb_desc_sch.DisplayMember = "DES_SCH_PT";
                this.cb_desc_sch.DataSource = lstMat;

                this.cb_desc_ext.DisplayMember = "DES_EXT_PT";
                this.cb_desc_ext.DataSource = lstMat;

                this.cb_desc_in.DisplayMember = "des_ins_pt";
                this.cb_desc_in.DataSource = lstMat;

            }

    quinta-feira, 28 de abril de 2016 17:32
  • Já tentou dar "Distinct" ? Exemplo:

    lstMatGR = new materialBLL().cargaGrupo().Distinct().ToList();

    Você poderia colocar "distinct" na consulta (procedure).

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    quinta-feira, 28 de abril de 2016 17:46
  • Já tentou dar "Distinct" ? Exemplo:

    lstMatGR = new materialBLL().cargaGrupo().Distinct().ToList();

    Você poderia colocar "distinct" na consulta (procedure).

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Ainda não tentei. uma pergunta como implementaria .Distinct().toList(); desculpe perguntar mais sou novo na programação estou nessa a pouco tempo. 
    quinta-feira, 28 de abril de 2016 18:26
  • Da maneira que mandei acima. Exemplo: Para o "MaterialGrupo" ficaria assim:

    IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
    lstMatGR = new materialBLL().cargaGrupo().Distinct().ToList();
    this.cb_id_gr.DisplayMember = "ID_GR";
    this.cb_id_gr.DataSource = lstMatGR;

    Observe que apenas acrescentei ".Distinct().ToList()" no que você mandou. Dai você acrescenta nas outras listas.
    Acredito que vai dar certo, mas se não resolver seu problema preciso que informe os atributos da sua classe "MaterialGrupo".

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    quinta-feira, 28 de abril de 2016 18:55
  • Da maneira que mandei acima. Exemplo: Para o "MaterialGrupo" ficaria assim:

    IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
    lstMatGR = new materialBLL().cargaGrupo().Distinct().ToList();
    this.cb_id_gr.DisplayMember = "ID_GR";
    this.cb_id_gr.DataSource = lstMatGR;

    Observe que apenas acrescentei ".Distinct().ToList()" no que você mandou. Dai você acrescenta nas outras listas.
    Acredito que vai dar certo, mas se não resolver seu problema preciso que informe os atributos da sua classe "MaterialGrupo".

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Bom dia. ainda não consegui resolver.

     public IList<MaterialDGT> cargaMaterial()
            {
                SqlConnection CON = new SqlConnection();
                try
                {

                    CON.ConnectionString = Properties.Settings.Default.connectioString;
                    SqlCommand CM = new SqlCommand();
                    CM.CommandType = System.Data.CommandType.StoredProcedure;
                    CM.CommandText = "usp_MATERIAL_CARREGAR";

                    CM.Connection = CON;

                    SqlDataReader ER;
                    IList<MaterialDGT> listaMaterial = new List<MaterialDGT>();

                    CON.Open();

                    ER = CM.ExecuteReader();
                    if (ER.HasRows)
                    {
                        while (ER.Read())
                        {

                            MaterialDGT MAT = new MaterialDGT();



                            ////TBL_DGT
                            MAT.id_dgt = Convert.ToInt32(ER["id_dgt"]);
                            MAT.DGT = Convert.ToString(ER["DGT"]);
                            MAT.des_curta_pt = Convert.ToString(ER["des_curta_pt"]);
                            MAT.des_curta_us = Convert.ToString(ER["des_curta_us"]);
                            MAT.des_curta_spn = Convert.ToString(ER["des_curta_spn"]);
                            MAT.YFP_YRES = Convert.ToString(ER["YFP_YRES"]);
                            MAT.YRAW = Convert.ToString(ER["YRAW"]);
                            MAT.norma = Convert.ToString(ER["norma"]);
                            MAT.dr_eng = Convert.ToString(ER["dr_eng"]);
                            MAT.marca = Convert.ToString(ER["marca"]);

                            MAT.LONGA = Convert.ToString(ER["LONGA"]);
                            MAT.LONG = Convert.ToString(ER["LONG"]);
                            MAT.DETALLADA = Convert.ToString(ER["DETALLADA"]);


                            //TBL_GRUPO
                            MAT.ID_GR = Convert.ToString(ER["ID_GR"]);
                            MAT.GRUPO = Convert.ToString(ER["GRUPO"]);

                            //TBL_FAMILIA
                            MAT.id_f = Convert.ToString(ER["ID_f"]);
                            MAT.FAMILIA = Convert.ToString(ER["FAMILIA"]);

                            MAT.ID_SF = Convert.ToString(ER["ID_SF"]);
                            MAT.SUBFAMILIA = Convert.ToString(ER["SUBFAMILIA"]);

                            //TBL_TIPO
                            MAT.ID_TP = Convert.ToString(ER["ID_TP"]);
                            MAT.DESC_TIPO_PT = Convert.ToString(ER["DESC_TIPO_PT"]);
                            MAT.DESC_TIPO_US = Convert.ToString(ER["DESC_TIPO_US"]);
                            MAT.DESC_TIPO_SPN = Convert.ToString(ER["DESC_TIPO_SPN"]);

                            //TBL_N_MATERIAL

                            MAT.ID_N_MAT = Convert.ToString(ER["ID_N_MAT"]);
                            MAT.DESC_N_MAT_PT = Convert.ToString(ER["DESC_N_MAT_PT"]);
                            MAT.DESC_N_MAT_US = Convert.ToString(ER["DESC_N_MAT_US"]);
                            MAT.DESC_N_MAT_SPN = Convert.ToString(ER["DESC_N_MAT_SPN"]);


                            //TBL_N_DIMENSIONAL
                            MAT.ID_N_DIMEN = Convert.ToString(ER["ID_N_DIMEN"]);
                            MAT.DESC_N_DIM_PT = Convert.ToString(ER["DESC_N_DIM_PT"]);
                            MAT.DESC_N_DIM_US = Convert.ToString(ER["DESC_N_DIM_US"]);
                            MAT.DESC_N_DIM_SPN = Convert.ToString(ER["DESC_N_DIM_SPN"]);


                            //TBL_DIMENSIONAL

                            MAT.ID_DIM = Convert.ToString(ER["ID_DIM"]);
                            MAT.DES_DIM_PT = Convert.ToString(ER["des_dim_pt"]);
                            MAT.DES_DIM_US = Convert.ToString(ER["des_dim_us"]);
                            MAT.DES_DIM_SPN = Convert.ToString(ER["des_dim_spn"]);


                            //TBL_SCH

                            MAT.ID_SC = Convert.ToString(ER["id_sc"]);
                            MAT.DES_SCH_PT = Convert.ToString(ER["des_sch_pt"]);
                            MAT.DES_SCH_US = Convert.ToString(ER["des_sch_us"]);
                            MAT.DES_SCH_SPN = Convert.ToString(ER["des_sch_spn"]);

                            //TBL_EXTREMIDADE

                            MAT.ID_EXT = Convert.ToString(ER["id_ext"]);
                            MAT.DES_EXT_PT = Convert.ToString(ER["des_ext_pt"]);
                            MAT.DES_EXT_US = Convert.ToString(ER["des_ext_us"]);
                            MAT.DES_EXT_SPN = Convert.ToString(ER["des_ext_spn"]);

                            //TBL_INSPENSOES

                            MAT.ID_INSP = Convert.ToString(ER["id_insp"]);
                            MAT.des_ins_pt = Convert.ToString(ER["des_ins_pt"]);
                            MAT.des_ins_us = Convert.ToString(ER["des_ins_us"]);
                            MAT.des_ins_spn = Convert.ToString(ER["des_ins_spn"]);




                            listaMaterial.Add(MAT);
                        }

                    }


                    return listaMaterial;

                }
                catch (SqlException ex)
                {
                    throw new Exception("Erro Servidor Sql:" + ex.Number);

                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);

                }
                finally
                {
                    CON.Close();
                }


            }

    sexta-feira, 29 de abril de 2016 13:46
  • Bom dia,

    Faltou adicionar:

    using System.Linq;


    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta Robert Sancts sexta-feira, 29 de abril de 2016 14:27
    • Não Marcado como Resposta Robert Sancts sexta-feira, 29 de abril de 2016 14:27
    sexta-feira, 29 de abril de 2016 13:54
  • Bom dia,

    Faltou adicionar:

    using System.Linq;


    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Agora foi, porem ainda esta do mesmo jeito acho que terei que refazer a Stored Pocedure.
    sexta-feira, 29 de abril de 2016 14:28
  • Acredito que não entendi seu problema.  O problema é só no preenchimento dos "ComboBox" que possui registros duplicados?
    Se for isso vai resolver o seu problema, segue o exemplo do MaterialGrupo. Você vai precisar tocrar o "NomeDoAtributo' pela descrição que vai aparecer. Exemplo:  "x.grupoDescricao";
    IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
    lstMatGR = new materialBLL().cargaGrupo();
    var comboCargas = lstMatGR.Select(x => x.NomeDoAtributo).Distinct().ToList();
    this.cb_id_gr.DisplayMember = "ID_GR";
    this.cb_id_gr.DataSource = comboCargas;
    Att,

    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 29 de abril de 2016 14:44
  • Acredito que não entendi seu problema.  O problema é só no preenchimento dos "ComboBox" que possui registros duplicados?
    Se for isso vai resolver o seu problema, segue o exemplo do MaterialGrupo. Você vai precisar tocrar o "NomeDoAtributo' pela descrição que vai aparecer. Exemplo:  "x.grupoDescricao";
    IList<MaterialGrupo> lstMatGR = new List<MaterialGrupo>();
    lstMatGR = new materialBLL().cargaGrupo();
    var comboCargas = lstMatGR.Select(x => x.NomeDoAtributo).Distinct().ToList();
    this.cb_id_gr.DisplayMember = "ID_GR";
    this.cb_id_gr.DataSource = comboCargas;
    Att,

    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Bom estou tentando realizar uma filtragem dentro dos combo Box. utilizado o lista que eu carrego no datagredView

    mas acho que o problema esta na logica.

     
    • Marcado como Resposta Robert Sancts sexta-feira, 29 de abril de 2016 16:32
    sexta-feira, 29 de abril de 2016 14:55
  • Essa solução que passei acredito que vai resolver seu problema.

    Obrigado

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 29 de abril de 2016 15:05
  • Essa solução que passei acredito que vai resolver seu problema.

    Obrigado

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    Valeu muito obrigado.
    sexta-feira, 29 de abril de 2016 16:33