Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Fernandes dos Santos

DataGridView -Trazendo uma registro vazio - linha em branco

Recommended Posts

Pessoal, boa tarde.

 

Estou com o seguinte problema eu carrego meu datagridview através do código que irei postar abaixo, porém no datagridview esta me retornando um registro em branco, ou seja, o último registro dele ele traz um registro vazio, e isso esta dando erro em minha aplicação caso o usuário escolha essa linha.

 

Como posso fazer para eliminar essa linha, o porque ele traz essa ultima linha em branco?

 Protected Sub CarregaGrid(strsql As String)
        ' Vincula o DataGridView ao BindingSource e carrega os dados do banco de dados
        Me.DataGridView1.DataSource = Me.BindingSource1
        exibeDados(strsql)

        Me.DataGridView1.DefaultCellStyle.SelectionForeColor = Color.Yellow
        Me.DataGridView1.DefaultCellStyle.SelectionBackColor = Color.Blue

        Me.DataGridView1.Columns(3).Visible = False
        Me.DataGridView1.Columns(6).Visible = False
        Me.DataGridView1.Columns(7).Visible = False


    End Sub
    Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
        RowSelecionada = DataGridView1.CurrentRow.Index

    End Sub
   


    Private Sub exibeDados(ByVal selectCommand As String)

        Dim dataAdapter As New SqlDataAdapter(selectCommand, SCLConnectionString)

        Dim commandBuilder As New SqlCommandBuilder(dataAdapter)
        Dim table As New DataTable()
        table.Locale = System.Globalization.CultureInfo.InvariantCulture
        dataAdapter.Fill(table)
        BindingSource1.DataSource = table
        DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)


    End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele traz a ultima linha em branco porque você está permitindo adição de novas linhas. Sete a propriedade dataGrid.AllowUserToAddRows para false

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Estevão Alves Avelino
      Estou com duvidas de como pegar os dados digitados no DataGridView e jogar dentro de variáveis, se alguém souber uma maneira de fazer isso ficarei muito grato!
    • Por drapn
      Boa tarde pessoal
      Estou com um projeto em Vb.Net que consiste em importar dados de uma planilha de Excel para um Datagridview.
      O projeto esta funcionando tudo ok porem notei que quando vou movendo as barras laterais e inferiores o formulário apresenta grande lentidão para mover as colunas etc...
      Fiz o teste criando um projeto novo com somente 1 Form, 1 Datagrid e 1Botão e os códigos para fazer a importação e quando eu "populo" o datagridview com o conteudo ele apresenta esses legs.
       
      Alguem a ja passou por isso?
      Será que é configuração da máquina? (Não é uma máquina tão fraca)
      O Vb.NET é a versão 2015
       
       
      Os arquivos de Excel variam de 80 Linhas por 5 Colunas á 400 linhas e 5 colunas
       
      O código é esse:
       
      Sub ImportaEstoque()         Dim Local         Local = EndArquivo()         If String.IsNullOrWhiteSpace(Local) Then             MessageBox.Show("Nenhum arquivo foi selecionado.", "Informação.", MessageBoxButtons.OK, MessageBoxIcon.Information)             Return         End If         '------------------------------         Dim caminhoArquivoExcel As String = Local         Dim nomePlanilhaExcel As String = "ESTQ" & "$"         Dim conexaoOleDb As OleDbConnection = Nothing         Dim ds As DataSet         Dim cmd As OleDbDataAdapter         '------------------------------         Try             'conexaoOleDb = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Local & ";Extended Properties=Excel 8.0;")             conexaoOleDb = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Local & ";Extended Properties='Excel 8.0;HDR=Yes'")             'cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]", conexaoOleDb)             cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]  Where UM Like '%" & "PC" & "%'", conexaoOleDb)             cmd.TableMappings.Add("Table", "tabelaExcel")             ds = New DataSet             cmd.Fill(ds)             dgvDados.DataSource = ds.Tables(0)         Catch ex As Exception             MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)         Finally             conexaoOleDb.Close()         End Try         sbQtdItens.Text = "Encontrados " & dgvDados.RowCount.ToString & " itens."     End Sub  
       
       
      Pessoal desde já muito obrigado pela força!
    • Por giullyanny
      Estou adicionando um dados em um DataGridView e está funcionando bem, mas qdo eu removo uma linha(em qualquer linha), os dados que sobram a ultima linha some, mas ela continua adicionada no DataGridView, tanto que qdo eu adiciono novamente ele preenche normalmente com a ultima linha.
      Veja as telas para entender melhor:
         
      pode se perceber que a ultima linha a qual não removi sumiu junto com a que eu removi
         
      Uma coisa que percebi e que qdo eu uso o refresh() no DataGridView ele some a ultima linha e quando eu uso um método para preencher o DataGridView ele pula o primeiro, mas debugando eu percebi que ele entra e adiciona se qualquer erro veja como estou add:
         
    • Por eduardohaag
      Olá, sou autodidata e amador na área da programação, muito do que sei, é feito pelo modo feito na raça com linhas e linhas de códigos.
      Hoje trabalhando em um novo projeto me deparei com uma situação que nunca me ocorreu, imprimir um relatório.
      No meu projeto tenho um form onde possui um datagridview onde é apresentada uma lista de produtos e alguns textbox que permite eu filtrar os dados apresentados, esse filtro é realizado utilizando comando direto na query, ou seja pra cada caso tenho uma query diferente.
      Até ai  tudo bem, o problema que agora preciso imprimir os dados que tenho no datagridview, e não tenho a menor ideia de como fazer isso.
      Alguém saberia me dizer como posso fazer? 
    • Por d_albino
      Bom dia!
       
      Estou com o seguinte problema ao carregar o registro selecionado: Quando a Grid carrega e eu seleciono, ela leva para um form e eu consigo atualizar perfeitamente, porém, ao fechar o form e repetir a operação, ele traz o primeiro registro do banco, independente dele atender os requisitos solicitados
       
      Segue código:
      Public Class Form3 Private Sub Form3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load PCarregaDados() End Sub Private Sub PCarregaDados() Using con As SqlConnection = GetConnection() Try con.Open() Dim sql As String = "SELECT idchamado, tiposolicitacao, nomefuncionario,nomesetor,descricaochamado, dataabertura, chamadoencerrado, dataencerramento, meiosolicitacao, logincriador FROM TblChamado INNER JOIN TblSetor nomesetor on (idsetor = setorfuncionario) INNER JOIN TblSolicitacao tiposolicitacao on (idsolicitacao = solicitacaotipo) INNER JOIN TblViaSolicitacao meiosolicitacao on (idmeiosolicitacao = solicitacaomeio) WHERE (TblChamado.chamadoencerrado = 0)" 'Dim sql As String = "SELECT * FROM TblChamado" Dim cmd As SqlCommand = New SqlCommand(sql, con) Dim da As SqlDataAdapter = New SqlDataAdapter(cmd) Dim dt As DataTable = New DataTable da.Fill(dt) dgvChamados.DataSource = dt 'dgvChamados.AllowUserToResizeColumns = False 'dgvChamados.MultiSelect = False 'dgvChamados.Columns.Item(0).HeaderText = "Chamado Nº" 'dgvChamados.Columns.Item(0).AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader 'dgvChamados.Columns.Item(1).HeaderText = "Tipo da Solicitação" 'dgvChamados.Columns.Item(1).Width = 250 'dgvChamados.Columns.Item(2).HeaderText = "Func.Solicitante" 'dgvChamados.Columns.Item(3).HeaderText = "Setor Solicitante" 'dgvChamados.Columns.Item(3).Width = 200 'dgvChamados.Columns.Item(4).HeaderText = "Descrição do Chamado " 'dgvChamados.Columns.Item(4).Width = 200 'dgvChamados.Columns.Item(5).HeaderText = "Data de Abertura" 'dgvChamados.Columns.Item(5).Width = 160 'dgvChamados.Columns.Item(6).HeaderText = "Encerrado" 'dgvChamados.Columns.Item(6).Visible = False 'dgvChamados.Columns.Item(7).HeaderText = "Data de Encerramento" 'dgvChamados.Columns.Item(7).Visible = False 'dgvChamados.Columns.Item(8).HeaderText = "Forma de Solicitação" 'dgvChamados.Columns.Item(8).Visible = False 'dgvChamados.Columns.Item(9).HeaderText = "Login Criador" 'dgvChamados.Columns.Item(9).Visible = False Catch ex As Exception MsgBox(ex.Message) Finally con.Close() End Try End Using End Sub Private Sub PListaChamados() intIdChamado = dgvChamados.CurrentRow().Cells(0).Value intSoltipo = dgvChamados.CurrentRow().Cells(1).Value strNomefunc = dgvChamados.CurrentRow().Cells(2).Value intSetor = dgvChamados.CurrentRow().Cells(3).Value strDescricao = dgvChamados.CurrentRow().Cells(4).Value datAbrechamado = dgvChamados.CurrentRow().Cells(5).Value booChamadoEnc = dgvChamados.CurrentRow().Cells(6).Value datEncChamado = dgvChamados.CurrentRow().Cells(7).Value intSolmeio = dgvChamados.CurrentRow().Cells(8).Value strLogcriador = dgvChamados.CurrentRow().Cells(9).Value Form4.ShowDialog() PCarregaDados() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub Private Sub dgvChamados_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvChamados.CellMouseDoubleClick 'Form4.CmbSolicitacaoTipo.Enabled = False 'Form4.TxtNomeFuncionario.Enabled = False 'Form4.CmbSetorFuncionario.Enabled = False 'Form4.MskDataAbertura.Enabled = False 'Form4.CmbSolicitacaoMeio.Enabled = False 'Form4.BtnAdNovo.Enabled = False 'Form4.BtnExcluir.Enabled = False 'Form4.BtnSalvar.Enabled = False PListaChamados() End Sub End Class
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.