Jump to content

DataGridView - exibir apenas alguns campos de uma tabela


jrsiqueira
 Share

Recommended Posts

Saudações Pessoal! Eu utilizei o exemplo deste link http://vbtuga.blogspot.com/2008/04/vbnet-utilizando-o-controlo.html para trabalhar com um DatGridView. O exemplo apresentado funciona perfeitamente, porém, não estou tendo sucesso em exibir determinados campos. Exemplo: na minha string SQL uso SELECT Campo1,Campo2,Campo3 FROM MinhaTabela e mesmo assim o DataGridView exibe todos os campos. Fui na propriedade Columns do DataGridView e defini apenas os campos que desejo mais nem assim funcionou. É possivel em um DataGrid eu definir apenas os campos desejados? Agradeço por qualquer ajuda.

Link to comment
Share on other sites

Olá!

Respondendo à tua pergunta, sim é possivel definir apenas os campos desejados em um datagrid.

Eu já fiz e utilizei o seguinte código:

    Dim Command As New SqlCommand
    Dim da As New SqlDataAdapter
    Dim dt As New DataTable
    Dim ds As New DataSet

         DataGridView1.DataSource = Nothing
        da = New SqlDataAdapter
        dt = New DataTable
        ds = New DataSet
        Try
            da = New SqlDataAdapter("SELECT ter_numfiscal, ter_nome, ter_telefone, ter_telemovel, ter_email, ter_localidade, ter_morada FROM tab_terceiros", DB)
            da.Fill(ds, "tab_terceiros")
            dt = ds.Tables(0)
            DataGridView1.Columns.Clear()
            DataGridView1.Rows.Clear()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox("ERROR: " & ex.Message, MsgBoxStyle.OkOnly, "WARNING!")
        End Try

Este código está a funcionar, basta adpatares às tuas necessidades.

Cumps

Link to comment
Share on other sites

Sim, é.

tens aqui um exemplo...(outro exemplo, pois escrevi ao mesmo tempo que a magda)

primeiro crias um procedimento que vai definir as colunas que vai ter, e quais os nomes:

Sub configurar()
        DataGridView1.Columns.Add("nickname", "Nome de utilizador")
        DataGridView1.Columns.Item(0).Width = 180
        DataGridView1.Columns.Add("numero", "Número de funcionário")
        DataGridView1.Columns.Item(1).Width = 120
        DataGridView1.Columns.Add("nome", "Nome")
        DataGridView1.Columns.Item(2).Width = 350
        DataGridView1.Columns.Add("consultar", "Consultar")
        DataGridView1.Columns.Item(3).Width = 100
        DataGridView1.Columns.Add("administrar", "Administrar")
        DataGridView1.Columns.Item(4).Width = 110
        DataGridView1.Columns.Add("ad", "Valida no Active Directory")
        DataGridView1.Columns.Item(5).Width = 100
        'DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells ' em cima estou a definir tamanho fixo, mas com isto ela autodefini-se
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically
    End Sub

depois na consulta, será algo assim:

configurar()
While dr.Read()
            Dim consultar = "Não"
            Dim administrar = "Não"
            Dim ad = "Não"
            If dr.Item("consultar") = "TRUE" Then consultar = "Sim"
            If dr.Item("administrar") = "TRUE" Then administrar = "Sim"
            If dr.Item("ad") = "TRUE" Then ad = "Sim"
            Me.DataGridView1.Rows.Add(dr.Item("nickname"), dr.Item("numero"), dr.Item("nome"), consultar, administrar, ad)
        End While

Se não tiveres percebido algo, é só dizer...

CUMPS

"use windows, você merece!"

Link to comment
Share on other sites

Olá!

Respondendo à tua pergunta, sim é possivel definir apenas os campos desejados em um datagrid.

Eu já fiz e utilizei o seguinte código:

    Dim Command As New SqlCommand
    Dim da As New SqlDataAdapter
    Dim dt As New DataTable
    Dim ds As New DataSet

         DataGridView1.DataSource = Nothing
        da = New SqlDataAdapter
        dt = New DataTable
        ds = New DataSet
        Try
            da = New SqlDataAdapter("SELECT ter_numfiscal, ter_nome, ter_telefone, ter_telemovel, ter_email, ter_localidade, ter_morada FROM tab_terceiros", DB)
            da.Fill(ds, "tab_terceiros")
            dt = ds.Tables(0)
            DataGridView1.Columns.Clear()
            DataGridView1.Rows.Clear()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox("ERROR: " & ex.Message, MsgBoxStyle.OkOnly, "WARNING!")
        End Try

Este código está a funcionar, basta adpatares às tuas necessidades.

Cumps

Saudações!

Muito obrigado pela ajuda...

Eu apliquei o seu exemplo e está funcionando, aparecem os campos que eu defini. Uma dúvida: é possível definir um cabeçalho para cada coluna para que não apareça o nome do campo como cabeçalho? Eu usei o exemplo da colega duduml e é estranho porque são exibidos os cabeçalhos personalizados e todos os demais campos da tabela. Não consigo entender porque isso ocorre. O meu DataGridView não está vinculado a nada estou fazendo na mão e estou enfrentando este dilema agora.

Link to comment
Share on other sites

Eu usei o exemplo da colega duduml e é estranho porque são exibidos os cabeçalhos personalizados e todos os demais campos da tabela. Não consigo entender porque isso ocorre. O meu DataGridView não está vinculado a nada estou fazendo na mão e estou enfrentando este dilema agora.

Não percebi o que quises-te dizer...

"use windows, você merece!"

Link to comment
Share on other sites

Olá  duduml!

Peço desculpas pelo post mal redigido. Vou tentar ser mais claro e objetivo.

Eu utilizando o primeiro exemplo de código (o da magda) tenho o resultado que desejo, porém, nos cabeçalhos das colunas são exibidos os nomes dos campos que eu defini no meu SELECT.

Se eu utilizar o primeiro exemplo de código (o da magda) e acrescentar a rotina que você postou, nos cabeçalhos das colunas são exibidos as descrições das colunas que eu defini através do seu exemplo, porém, são exibidos também "todos" os campos da minha tabela, exemplo, fica algo parecido com isso:

Nome  Endereço  Cidade  Estado  MeuCampo1    MeuCampo2    MeuCampo3    MeuCampo4    MeuCampo5    MeuCampo6

Onde MeuCampoX = os campos da minha tabela

Em resumo:

Através do exemplo da magda eu tenho os campos que desejo porém não consigo personalizar o cabeçalho das colunas

Através do exemplo da magda + seu exemplo são exibidos os cabeçalhos personalizados + todos os demais campos da minha tabela (independente do que está definido no SELECT) sendo que nestes o cabeçalho é o próprio nome do campo.

Espero que eu tenha sido mais esclarecedor desta vez.

Observação: no meu componente DataGridView na propriedade DatSource não defini nada e o mesmo ocorre na propriedade Columns.

Obrigado

Link to comment
Share on other sites

Para dares um nome às tuas colunas usa o seguinte codigo:

DataGridView2.Columns(2).HeaderText = "Cliente"
          DataGridView2.Columns(0).HeaderText = "Código"
          DataGridView2.Columns(1).HeaderText = "Artigo"

Mas só o podes utilizar depois de teres carregado a tabela se não vai dar erro.

Link to comment
Share on other sites

🙂

Saudações Pessoal

Quero agradecer a todos os colegas pela ajuda e pelos esclarecimentos a minha dúvida.

Aprendi um pouco mais com vocês e principalmente consegui o problema que me perseguia.

Muito obrigado mesmo! Até a  próxima!!!

José Roberto Siqueira

São Paulo-Brasil

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.