none
Mestre Detalhe com Duas ListView RRS feed

  • Discussão Geral

  • Estou tentando fazer um mestre-detalhe usando duas tabelas relacionadas em meu projeto.

    O que acontece é que eu consegui fazer isso usando o componente do Windows Forms GridView seguindo um tutorial.

    Mas agora eu quero usar essa mesma lógica para duas ListViews. Ou seja, a mesma ideia, mas agora ao invés de usa Grid quero usar o ListView. Quero usá-la mais por questão de aprendizado e facilidade que ela proporciona ao meu projeto.

    Mas agora eu quero usar essa mesma lógica para duas ListViews. Ou seja, a mesma ideia, mas agora ao invés de usa Grid quero usar o ListView. Quero usá-la mais por questão de aprendizado e facilidade que ela proporciona ao meu projeto.

    Mas como muito novo em WinForms não tenho muita ideia de como fazer isso.

    Resumindo a história: tenho duas tabelas que são relacionadas. Alunoes e Ocorrências. E o relacionamento é de um aluno para várias ocorrências. Eu queria mostrar as informações do aluno em um ListView e ao selecionar algum registro mostre em outro ListView a Ocorrência que está relacionada a ele.

    Tentei usar os mesmo códigos do tuto para aproveitar no ListView, mas não deu muito certo e acabei apagando todos os códigos que tinha.

    Mas como posso fazer isso ? Ou existe alguma outra forma de fazer isso usando o Grid e ListView ?

    **O ListView para os dados do aluno e o GridView para as ocorrências.

    EDIT

    Bem fuçando aqui consegui fazer com que funcionasse a pesquisa, mas somente em um ListView. E nesse que funciona, eu mostro para o usuário só os dados do aluno, e queria no outro ListViewmostrar todas as ocorrências relacionadas a aquele aluno selecionado.

    Enfim, os códigos que tenho são:

    Os códigos que tenho(Esse primeiro ta no form de pesquisas e o segundo é um trecho da classe que faz as manipulações, esse trecho é o da pesquisa):

    public override void Pesquisar()
        {
            try
            {
                 AcessaDadosOcorrencias acesso = new AcessaDadosOcorrencias();
                 DataTable dt = new DataTable();
    
                 if (radioButtonCodigo.Checked)
                 {
                      dt = acesso.PesquisaID(long.Parse(textBoxPesquisar.Text));
                 }
    
                 if (radioButtonDescricao.Checked)
                 {
                      dt = acesso.PesquisaNomeAluno("%" + textBoxPesquisar.Text + "%");
                 }
    
                 Carregar(dt);
            }
            catch (Exception ex)
            {                
                throw new Exception(ex.Message.ToString());
            }
        }
    
        private void Carregar(DataTable dt)
        {
            try
            {
                listViewDados.Items.Clear();
    
                foreach (DataRow dr in dt.Rows)
                {
                    ListViewItem item = new ListViewItem();
    
                    item.Text = dr["OcorrenciaID"].ToString();
                    item.SubItems.Add(dr["NomeAluno"].ToString());
                    item.SubItems.Add(dr["TipoOcorrencia"].ToString());
                    item.SubItems.Add(dr["CausaOcorrencia"].ToString());
                    item.SubItems.Add(string.Format("{0:dd/MM/yyy}", dr["DataOcorrencia"]));
                    item.SubItems.Add(dr["DescricaoOcorrencia"].ToString());
                    item.SubItems.Add(dr["Status"].ToString());
    
                    listViewDados.Items.Add(item);
                }
            }
            catch (Exception ex)
            {                
                throw new Exception(ex.Message.ToString());
            }
        }
    public DataTable Pesquisar()
        {
            try
            {
                PesquisasTableAdapter ta = new PesquisasTableAdapter();
                BD_SISGALDataSet.PesquisasDataTable dt = new BD_SISGALDataSet.PesquisasDataTable();           
    
                ta.Pesquisar(dt);
    
                return dt;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
    
        public override DataTable PesquisaID(long nCodGenerico)
        {
            try
            {
                BD_SISGALDataSet.PesquisasDataTable dt = new BD_SISGALDataSet.PesquisasDataTable();
                PesquisasTableAdapter ta = new PesquisasTableAdapter();
    
                ta.PesquisaID(dt, nCodGenerico);
    
                return dt;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
    
        public override DataRow PesquisaID()
        {
            try
            {
                return this.PesquisaID(nCodOcorrencia).Rows[0];
            }
            catch (Exception ex) 
            {                
                throw new Exception(ex.Message.ToString());
            }
        }
    
        public DataTable PesquisaNomeAluno(string sDsNomeAluno)
        {
            try
            {
                BD_SISGALDataSet.PesquisasDataTable dt = new BD_SISGALDataSet.PesquisasDataTable();
                PesquisasTableAdapter ta = new PesquisasTableAdapter();                
    
                ta.PesquisaNomeAluno(dt, "%" + sDsNomeAluno + "%");
    
                return dt;
            }
            catch (Exception ex)
            {                
                throw new Exception(ex.Message.ToString());                
            }
        }




    • Editado Érik Thiago terça-feira, 26 de maio de 2015 14:06 Arrumando a pergunta
    • Tipo Alterado Marcos SJ terça-feira, 23 de fevereiro de 2016 14:14
    terça-feira, 26 de maio de 2015 13:56