none
Adicionar ícone em coluna do datagridview RRS feed

  • Pergunta

  • Olá 

    Gente, to tentando adicionar um ícone aos itens de uma coluna datagridview:

      For i As Integer = 0 To dgvPedidos.Rows.Count - 1
                For ColNo As Integer = 1 To 9
                    If dgvPedidos.Rows(i).Cells(3).Value = "Aberto" Then
                        dgvPrecosVenda.Rows(i).Cells(2).Value = ImageList1.Images(1)
                    Else
                        dgvPedidos.Rows(i).Cells(2).Value = ImageList1.Images(0)
                    End If
                Next
            Next
        End Sub

    Mas  em vez da imagem/ícone, exibe "System.drawing.bitmap"

    É que para adicionar as colunas, eu uso:

    Dim ColunasExibidas_Pedidos = "C, Cliente, ' ' as [ ], Situacao as [Situação], Entregue as [Entrega]"
    SELECT " & ColunasExibidas_Pedidos & " FROM Pedidos ORDER by Data ASC"

    Não sei se tem como definir o tipo de coluna picture por meio do meu "ColunasExibidas_Pedidos". Sei que quando configuro uma tabela SQL posso escolher o tipo de dados, mas pelo SELECT não sei como.

    Alguém pode me ajudar? Desde já agradeço.


    • Editado Eliseu5 segunda-feira, 1 de fevereiro de 2016 16:37
    segunda-feira, 1 de fevereiro de 2016 16:13

Respostas

  • Olá Gente

    Solucionei, acabei criando no arquivo SQl (.mdf) uma coluna tipo "Imagem" e pronto. É que como eu não vou nunca salvar imagens na tabela, mas apenas exibir ícones na hora da pesquisa, achava desnecessário criar esta coluna. Mas como ainda não houve uma solução para criar a coluna tipo imagem na hora da pesquisa e exibição dos dados SQL Server, então improvisei. 



    • Marcado como Resposta Eliseu5 segunda-feira, 1 de fevereiro de 2016 19:24
    • Editado Eliseu5 segunda-feira, 1 de fevereiro de 2016 19:26
    segunda-feira, 1 de fevereiro de 2016 19:24

Todas as Respostas

  • Boa tarde.

    O tipo de coluna do DataGridView é ImageColumn?

    Caso não seja, edite a Grid e adicione esta coluna; depois é só definir o value para a imagem necessária.


    Att., Rafael Simor

    segunda-feira, 1 de fevereiro de 2016 16:42
  • Olá Simor

    A coluna é adicionada através do comando "SELECT" (SELECT C, Cliente, ' ' as [ ] FROM Pedidos), então não é definido o tipo, creio que é por padrão tipo String. Sei que as colunas C, Cliente e outras eu defini na tabela SQL o tipo string, mas

    ' ' as [ ]

    não busca da tabela.

    Então, como inserir a coluna do tipo "ImageColumn" através do comando SQL "SELECT"?

    segunda-feira, 1 de fevereiro de 2016 18:03
  • Eliseu, tu não adicionas a ImageColumn no SELECT, tu adicionas na Grid.

    Depois tu modificas o valor desta coluna pelo evento DataBound.


    Att., Rafael Simor

    segunda-feira, 1 de fevereiro de 2016 18:05
  • Olá Simor

    Eu tenho meu datagridview em branco, sem colunas. Após executar meu software ele carrega no datagrid as colunas que eu escolho no meu "ColunasExibidas_Pedidos", juntamente com os dados de minha tabela SQL server:

    Dim ColunasExibidas_Pedidos = "C, Cliente, ' ' as [ ], Situacao as [Situação], Entregue as [Entrega], Financeiro, Data, PedidoNum as [Pedido], 'R$' as [ ], TotalRS as [Valor] " 'Colunas visiveis

    Public Sub Carregar_Pedidos() Using con As SqlConnection = ConexaoSQL() Try con.Open() Dim sql As String = "SELECT " & ColunasExibidas_Pedidos & " FROM Pedidos WHERE PedidoNum LIKE '%" & txtBuscar.Text.Trim ORDER by Data ASC" Dim cmd As SqlCommand = New SqlCommand(sql, con) Dim da As SqlDataAdapter = New SqlDataAdapter(cmd) Dim dt As DataTable = New DataTable da.Fill(dt) dgvPedidos.DataSource = dt Catch ex As Exception MsgBox(ex.Message) Finally con.Close() End Try End Using End Sub

    Só que a terceira coluna:

    ' ' as [ ]

    não foi criada na tabela física (no arquivo *.mdf), pois eu não vou armazenar o ícone no arquivo .mdf, só exibir. Então a coluna "  " será criada na hora em que eu chamo a função "Carregar_Pedidos()".

    Como posso definir então, através de meu código acima que a coluna " " será uma "ImageColumn"?

    segunda-feira, 1 de fevereiro de 2016 19:12
  • Olá Gente

    Solucionei, acabei criando no arquivo SQl (.mdf) uma coluna tipo "Imagem" e pronto. É que como eu não vou nunca salvar imagens na tabela, mas apenas exibir ícones na hora da pesquisa, achava desnecessário criar esta coluna. Mas como ainda não houve uma solução para criar a coluna tipo imagem na hora da pesquisa e exibição dos dados SQL Server, então improvisei. 



    • Marcado como Resposta Eliseu5 segunda-feira, 1 de fevereiro de 2016 19:24
    • Editado Eliseu5 segunda-feira, 1 de fevereiro de 2016 19:26
    segunda-feira, 1 de fevereiro de 2016 19:24
  • Olá, Eliseu... É possível criar a estrutura da grid view de forma explícita, mais ou menos assim:

    Me.dgvExemplo.ColumnCount = dt.Columns.Count
    Me.dgvExemplo.ColumnHeadersVisible = True
    
    Me.dgvExemplo.Columns.Add(
       New DataGridViewImageColumn With {
          .Image = Drawing.Image.FromFile("img_example.png")
       }
    )
    
    For i = 0 To dt.Rows.Count - 1
       Me.dgvExemplo.Rows.Add(dt(i).ItemArray)
    Next
    segunda-feira, 1 de fevereiro de 2016 20:32
  • Olá adpeiter

    Já solucionei meu problema, mas agradeço por sua colaboração ;)

    terça-feira, 2 de fevereiro de 2016 00:02
  • Ok, Eliseu...
    No entanto, como vc mesmo comentou acima, é desnecessário criar esta coluna...
    A minha resposta foi pq pareceu que você não estava satisfeito com a sua "solução"...
    terça-feira, 2 de fevereiro de 2016 11:01