none
Imagem em DataGridView RRS feed

  • Discussão Geral

  • Oi galera.

    É o seguinte, eu tenho uma tabela num banco de dados em que tem uma coluna com imagem.

    Porém na DataGridView a imagem não aparece toda, eu queria colocar a aparecer a miniatura da imagem é possivel?

    Imagem de como esta:

    segunda-feira, 5 de junho de 2017 18:37

Todas as Respostas

  • Alguém?
    terça-feira, 6 de junho de 2017 12:39
  • Olá já tentou colocar o image layout para redimensionar a imagem conforme o tamanho da linha e coluna?

    https://msdn.microsoft.com/pt-br/library/system.windows.forms.datagridviewimagecolumn.imagelayout(v=vs.110).aspx

    https://msdn.microsoft.com/pt-br/library/system.windows.forms.datagridviewimagecelllayout(v=vs.110).aspx

    Tente colocar o layout como Stretch ou Zoom.

    terça-feira, 6 de junho de 2017 13:58
  • privatevoid Stretch(object sender, EventArgs e) { foreach (DataGridViewImageColumn column in dataGridView1.Columns) { column.ImageLayout = DataGridViewImageCellLayout.Stretch; column.Description = "Stretched"; } }

    Só colocar isso?

    Em que altero a column para que valor?

    terça-feira, 6 de junho de 2017 14:20
  • Eu tenho este código para listar os dados

            public void disp_data() //Função para mostrar os dados no DataGridView
            {
                sqlCon.Open();
                SqlCommand cmd = sqlCon.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "SELECT * FROM Filmes";
                cmd.ExecuteNonQuery();
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                dgvMovies.DataSource = dt;
                sqlCon.Close();
                //Mudar nome das colunas & tamanho
                dgvMovies.Columns[0].HeaderText = "ID Filme"; //Coluna idFilme
                dgvMovies.Columns[0].Width = 60; //Editar tamanho da Coluna idFilme
                dgvMovies.Columns[1].HeaderText = "Nome do Filme"; //Coluna NomeFilme
                dgvMovies.Columns[1].Width = 200; //Editar tamanho da Coluna NomeFilme
                dgvMovies.Columns[2].HeaderText = "Realizador"; //Coluna Realizador
                dgvMovies.Columns[2].Width = 200; //Editar tamanho da Coluna Realizador
                dgvMovies.Columns[3].HeaderText = "Categoria"; //Coluna Genero
                dgvMovies.Columns[3].Width = 160; //Editar tamanho da Coluna Genero
                dgvMovies.Columns[4].HeaderText = "Ano"; //Coluna Ano
                dgvMovies.Columns[4].Width = 40; //Editar tamanho da Coluna Ano
                dgvMovies.Columns[5].HeaderText = "Classif. Idade"; //Coluna ClassfIdade
                dgvMovies.Columns[5].Width = 50; //Editar tamanho da Coluna ClassfIdade
                dgvMovies.Columns[6].HeaderText = "Classif. IMDB"; //Coluna ClassfIMDB
                dgvMovies.Columns[6].Width = 50; //Editar tamanho da Coluna ClassfIMDB
                dgvMovies.Columns[7].HeaderText = "Formato"; //Coluna Formato
                dgvMovies.Columns[7].Width = 60; //Editar tamanho da Coluna Formato
                dgvMovies.Columns[8].HeaderText = "Capa"; //Coluna Capa
                dgvMovies.Columns[8].Width = 80; //Editar tamanho da Coluna Capa
                dgvMovies.Columns[9].HeaderText = "Última At."; //Coluna UltimaAt
                dgvMovies.Columns[9].Width = 100; //Editar tamanho da Coluna UltimaAt
                dgvMovies.Sort(dgvMovies.Columns[0], ListSortDirection.Ascending); //Ordenar a coluna IDFilme por ordem Ascendente
            }

    terça-feira, 6 de junho de 2017 14:23
  • privatevoid Stretch(object sender, EventArgs e) { foreach (DataGridViewImageColumn column in dataGridView1.Columns) { column.ImageLayout = DataGridViewImageCellLayout.Stretch; column.Description = "Stretched"; } }

    Só colocar isso?

    Em que altero a column para que valor?


    Isto, nem precisa ser via código pode alterar a coluna em Design-Time e colocar o ImageLayout setado já.
    terça-feira, 6 de junho de 2017 14:32
  • Pode me ajudar com isso por favor.
    Sou um noob nestas coisas.
    Obrigado
    terça-feira, 6 de junho de 2017 14:35
  • Pode me ajudar com isso por favor.
    Sou um noob nestas coisas.
    Obrigado

    Clica com o botão direito em cima do seu datagridview e vai em "Edit Columns", ou na paleta de propriedades clica no botão "..." da propriedade Columns do datagridview.

    Na janela de edição de colunas localize a sua coluna de imagem e seta o ImageLayout, já se você não está criando as colunas na mão e sim deixando o proprio grid gerar as colunas ai a ideia é logo apos popular o grid rodar uma rotina igual a da documentação.

    //.. Códigos do seu método
    
    dgvMovies.Sort(dgvMovies.Columns[0], ListSortDirection.Ascending); //Ordenar a coluna IDFilme por ordem Ascendente
    
    // .. Atualiza colunas de imagem
    foreach (DataGridViewColumn column in dgvMovies.Columns)
        {
            if(column is DataGridViewImageColumn){
               ((DataGridViewImageColumn)column).ImageLayout = DataGridViewImageCellLayout.Stretch;
            }
        }


    terça-feira, 6 de junho de 2017 15:02
  • Obrigado.

    E como faço para alterar o tamanho das linhas?

    quarta-feira, 7 de junho de 2017 07:42
  • No DataGridView existe a propriedade chamada RowTemplate que você consegue configurar algumas características das Rows que serão criadas, dentre elas Height que é a altura que as linhas terão por padrão.

    https://msdn.microsoft.com/pt-br/library/system.windows.forms.datagridview.rowtemplate%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    quarta-feira, 7 de junho de 2017 11:36