none
Sub-DataGrid RRS feed

  • Pergunta

  • Boa tarde sei o jogo do Brasil é daqui a pouco e posso estar atrapalhando..mas é que até as duas tenho q trampa faze o q?!rsrs

    Enfim o que eu preciso fazer agora é ao exibir os dados em dataGrid, se o usuário der dois cliques em determinada linha, exibirei um subDatagrid abaixo dessa linha exibindo dados de uma campo ligado ao dado...Bom pesquisei como sub data grid, mas não encontrei nada, e sinceramente não sei o nome disso...se alguém puder da um ponto de start pelo menos...estou usando Forms..

    E vamo que vamo BRASIL!!!!

    quinta-feira, 12 de junho de 2014 16:09

Respostas

  • Já consegui fazer funfa agora vi...eh uma interessante solução mas queria mesmo era usar master details só que em winforms, ficaria assim

    • Marcado como Resposta TamiresAp sexta-feira, 26 de setembro de 2014 12:48
    sexta-feira, 13 de junho de 2014 14:21

Todas as Respostas

  • Tamires, boa noite...

    Abrir linhas abaixo você não vai conseguir ou dificilmente vai conseguir recorrendo a famosa "POG" (kkk), pois são tipos de dados diferentes em cada um dos grids, uma solução seria criar um grid dinâmico conforme a linha que você clicar, então fiz um código de exemplo, no caso só veja a melhor posição para criar o Grid, no exemplo crio conforme a posição do mouse no grid, espero que tenha ajudado e que bom que ganhamos a primeira e acertei o resultado no bolão no trabalho kkkk

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            List<Jogadores> jogadoresObj;
            private void Form1_Load(object sender, EventArgs e)
            {
                jogadoresObj = new List<Jogadores> 
                {
                    new Jogadores
                    {
                        Numero=10,
                        Nome = "Neymar",
                        Posicao = "Atacante"
                    },
                    new Jogadores
                    {
                        Numero=2,
                        Nome = "Dani Alves",
                        Posicao = "Lateral Direito"
                    },
                    new Jogadores
                    {
                        Numero=3,
                        Nome = "Thiago Silva",
                        Posicao = "Zagueiro"
                    },
                    new Jogadores
                    {
                        Numero=9,
                        Nome = "Fred",
                        Posicao = "Atacante"
                    },
                    new Jogadores
                    {
                        Numero=11,
                        Nome = "Oscar",
                        Posicao = "Meia"
                    },
                     new Jogadores
                    {
                        Numero=8,
                        Nome = "Paulinho",
                        Posicao = "Volante"
                    }
                };
    
                dataGridView1.DataSource = jogadoresObj;
            }
    
    
    
            DataGridView dataGridViewMenu;
            void CriarDataGrid(int x, int y, int num)
            {
                if (dataGridViewMenu != null)
                    dataGridViewMenu.Dispose();
    
                dataGridViewMenu = new DataGridView();
                ((System.ComponentModel.ISupportInitialize)(dataGridViewMenu)).BeginInit();
                dataGridViewMenu.SuspendLayout();
                dataGridViewMenu.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                dataGridViewMenu.Location = new System.Drawing.Point(x, y);
                dataGridViewMenu.Name = "dataGridViewMenu";
                dataGridViewMenu.Size = new System.Drawing.Size(300,100);
                dataGridViewMenu.TabIndex = 1;
                dataGridView1.Controls.Add(dataGridViewMenu);
    
                dataGridViewMenu.DataSource = jogadoresObj.Where(i => i.Numero == num).ToList();
    
    
            }
    
            private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                CriarDataGrid(e.Location.X, e.Location.Y, (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value);
    
            }
    
    
    
        }
    
        class Jogadores
        {
            public int Numero { get; set; }
            public string Nome { get; set; }
            public string Posicao { get; set; }
        }

    quinta-feira, 12 de junho de 2014 23:09
  • Acho q vc não entendeu o que preciso fazer..seguindo seu exemplo eu ao clicar em neymar por exemplo, deveria aparecer em baixo dele  a classe timesQueJogou que está relacionada com a classe jogadores daí iria aparecer Santos - 2009 a 2012 e em outra linha Barcelona 2013 a 2014...se clicasse em outro jogador deveria desaparecer a do neymar e aparecer a do outro jogador...
    sexta-feira, 13 de junho de 2014 11:37
  • Tamires, na verdade eu entendi, é que fiz um select na mesma classe simulando uma tabela afim de exemplo, no método CriarDataGrid recebe o numero da camisa, no seu caso você poderia substituir por um id de jogador e com esse id ir até o banco na tabela timesQueJogou e buscar uma lista de times e da mesma forma que fiz, popular o segundo DataGridView...entendeu?

    sexta-feira, 13 de junho de 2014 12:53
  • Então está faltando algo no código pq executei ele e não me mostra nada..Ou eu estou deixando passar alguma coisa...
    • Editado TamiresAp sexta-feira, 13 de junho de 2014 14:11
    sexta-feira, 13 de junho de 2014 14:11
  • Já consegui fazer funfa agora vi...eh uma interessante solução mas queria mesmo era usar master details só que em winforms, ficaria assim

    • Marcado como Resposta TamiresAp sexta-feira, 26 de setembro de 2014 12:48
    sexta-feira, 13 de junho de 2014 14:21