none
Atualizar Datagrid RRS feed

  • Pergunta

  • Pessoal tem algum comando pra atualizar o datagrid apos gravar o registro, uma vez procurei aqui e não consegui e acabai criando dois grids pra resolver, mas sera que não tem nada simples? Toda vez que gravo ele duplica os registros deixando um sem a mudança e outro com a alteração que fiz.
    quinta-feira, 13 de setembro de 2012 14:11

Respostas

Todas as Respostas

  • RJCERRI,

    Você faz alguma conexão com o banco de dados ?

    Se não faz segue um exemplo simples que atualiza automaticamente.

    Public Class Form1

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            'Carrega a quantidade de colunas do DataGridView
            DataGridView1.ColumnCount = 3
            'Insere informações no DataGridView
            DataGridView1.Rows.Add(1, "Product 1", 10)
            DataGridView1.Rows.Add(2, "Product 2", 20)
            DataGridView1.Rows.Add(3, "Product 3", 30)
            DataGridView1.Rows.Add(4, "Product 4", 40)
            DataGridView1.Rows.Add(5, "Product 5", 50)
            DataGridView1.Rows.Add(6, "Product 6", 60)
        End Sub

        Private Sub DataGridView1_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
            'Quando clicado em uma celula ou linha sera apresentado o valor da coluna zero
            Dim i, j As Integer
            i = DataGridView1.CurrentRow.Index
            MsgBox(DataGridView1.Item(0, i).Value)

        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            'Ao clicar no botão inserir ele vai inserir a informação colocada nos TextBox
            DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
            'Limpa os campos após inserir os dados no DataGridView
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
        End Sub
    End Class

    Se caso ele faz um conexão com o banco de dados sera diferente o Código.

    Coloca no final do botão salvar o seguinte:

    Me.DataGridView1.Refresh()

    quinta-feira, 13 de setembro de 2012 16:37
  • Já tinha tentando isso, e tem isso um conexao com o banco o codigo ta assim

            ConnectionAss.Close()
            ConnectionAss.Open()
            alteraSTR = "update assessores"
            alteraSTR = alteraSTR + " set codigo='" & txtcod.Text & "',"
            alteraSTR = alteraSTR + " escritorio='" & txtescritorio.Text & "',"
            alteraSTR = alteraSTR + " categoria='" & txtcategoria.Text & "',"
            alteraSTR = alteraSTR + " status='" & txtstatus.Text & "',"
            alteraSTR = alteraSTR + " lider='" & txtlider.Text & "',"
            alteraSTR = alteraSTR + " telefone='" & txttelefone.Text & "'"
            alteraSTR = alteraSTR + " where codigo = '" & txtcod.Text & "'"

            executa = New SqlCommand(alteraSTR, ConnectionAss)
            executa.ExecuteNonQuery()
            ConnectionAss.Close()
            Sqlnomes.Fill(DsAss11)
            Sqlnomes.Update(DsAss11)
            
            'ConnectionAss.Close()
            'DGassessor.DataSource = ""
            'Sqlnomes.Update(DsAss11)
            'ConnectionAss.Open()
            'DGassessor.DataSource = DsAss11
           
            Me.DGassessor.Refresh()

    quinta-feira, 13 de setembro de 2012 18:04
  • Este código seu está em uma sub?

    Post aí ele completo.

    Edi Carlos

    quinta-feira, 13 de setembro de 2012 19:29
  • Ta assim

        Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
            ConnectionAss.Close()
            ConnectionAss.Open()
            alteraSTR = "update assessores"
            alteraSTR = alteraSTR + " set codigo='" & txtcod.Text & "',"
            alteraSTR = alteraSTR + " escritorio='" & txtescritorio.Text & "',"
            alteraSTR = alteraSTR + " categoria='" & txtcategoria.Text & "',"
            alteraSTR = alteraSTR + " status='" & txtstatus.Text & "',"
            alteraSTR = alteraSTR + " lider='" & txtlider.Text & "',"
            alteraSTR = alteraSTR + " telefone='" & txttelefone.Text & "'"
            alteraSTR = alteraSTR + " where codigo = '" & txtcod.Text & "'"

            executa = New SqlCommand(alteraSTR, ConnectionAss)
            executa.ExecuteNonQuery()
            ConnectionAss.Close()
            Sqlnomes.Fill(DsAss11)
            Sqlnomes.Update(DsAss11)
           
            'ConnectionAss.Close()
            'DGassessor.DataSource = ""
            'Sqlnomes.Update(DsAss11)
            'ConnectionAss.Open()
            'DGassessor.DataSource = DsAss11
           
            Me.DGassessor.Refresh()

        End Sub

    quinta-feira, 13 de setembro de 2012 20:00
  • Eu digo o código que vc usa para carregar o grid. 

    Poste ele.

    Edi Carlos

    quinta-feira, 13 de setembro de 2012 20:07
  • Eu usei fiz as propriedades do grid via designer, eu carrego ele quando abro o form assim.

    Private Sub Frmassessor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: This line of code loads data into the 'BDDataSet.ASSESSORES' table. You can move, or remove it, as needed.
               txtsenha.Text = ""
               Formadm2.ShowDialog()
               Formadm2.txtliberar.Text = ""
         
                Sqlnomes.Fill(DsAss11)
                ConnectionAss.Open()
          
                btnalterar.Enabled = False
                btncancelar.Enabled = False
                btnexcluir.Enabled = False
                btngravar.Enabled = False
                btnnovo.Enabled = False
                txtcod.Enabled = False
                txtcategoria.Enabled = False
                txtescritorio.Enabled = False
                txtlider.Enabled = False
                txtstatus.Enabled = False
                txttelefone.Enabled = False

            End If

        End Sub

    quinta-feira, 13 de setembro de 2012 20:29
  • Olha amigo, me desculpe se eu não posso te ajudar,

    mais esse código não carrega datagrid não.

    Deve ser outro código.

    Edi Carlos

    quinta-feira, 13 de setembro de 2012 20:33
  • Eu não carrego o datagrid na mão, as propriedades datasource e datamember eu fiz na tela via designer.
    quinta-feira, 13 de setembro de 2012 20:50
  • Assim

    por isso que no load eu só preciso colocar isso 

     Sqlnomes.Fill(DsAss11)
                ConnectionAss.Open()

    pra carregar os dados

    quinta-feira, 13 de setembro de 2012 20:53
  • Então vc tem que fazer o msm no bot~~ao que usa para alterar os dados.

    dai ele vai forçar a atualizar o datagrid.

    Tente esse código:

     Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
            ConnectionAss.Close()
            ConnectionAss.Open()
            alteraSTR = "update assessores"
            alteraSTR = alteraSTR + " set codigo='" & txtcod.Text & "',"
            alteraSTR = alteraSTR + " escritorio='" & txtescritorio.Text & "',"
            alteraSTR = alteraSTR + " categoria='" & txtcategoria.Text & "',"
            alteraSTR = alteraSTR + " status='" & txtstatus.Text & "',"
            alteraSTR = alteraSTR + " lider='" & txtlider.Text & "',"
            alteraSTR = alteraSTR + " telefone='" & txttelefone.Text & "'"
            alteraSTR = alteraSTR + " where codigo = '" & txtcod.Text & "'"
    
            executa = New SqlCommand(alteraSTR, ConnectionAss)
            executa.ExecuteNonQuery()
            ConnectionAss.Close()
            
            Sqlnomes.Update(DsAss11)
           
            'ConnectionAss.Close()
            'DGassessor.DataSource = ""
            'Sqlnomes.Update(DsAss11)
            'ConnectionAss.Open()
            'DGassessor.DataSource = DsAss11
           
           Sqlnomes.Fill(DsAss11)
    
        End Sub
    Edi Carlos

    • Editado Edi Carlos_MA quinta-feira, 13 de setembro de 2012 21:19
    quinta-feira, 13 de setembro de 2012 21:16
  • Da esse erro


    Child list for field ASSESSORES cannot be created.

    quinta-feira, 13 de setembro de 2012 21:30
  • Em que linha está dando o erro?
    sexta-feira, 14 de setembro de 2012 12:13
  • Nessa aqui

    DGassessor.DataSource = ""

    Esta dando esse mesmo problema agora num combobox que fiz e que recebe dados em execução.

    sexta-feira, 14 de setembro de 2012 13:42
  • Tentei colocar no final do botao uma nova conexao e um novo dataset, ma ai o grid não mostra nada o que eu fiz de errado? Impossivel que pra atualizar um grid ou um combobox seja essa volta toda :(

    Dim connova As New SqlConnection("Data Source=CEN-SQLSRV1;Initial Catalog=UM_Qualidade;Integrated Security=True")
    Dim datanova As New SqlDataAdapter("select * from assessores", connova)
    Dim dsnova As New DataSet
    dsnova.Tables.Add("ASSESSORES")
    datanova.Fill(dsnova)
    DGassessor.DataMember = "ASSESSORES"
    DGassessor.DataSource = dsnova
    ConnectionAss.Open()

    sexta-feira, 14 de setembro de 2012 15:41
  • Ai vc tem que colocar a origem de dados do seu datagrid, ela ta "" vazia.

    Edi Carlos

    sexta-feira, 14 de setembro de 2012 18:34
  • Não tinha nada lá sobre esse problema da atualização do datagrid, tinah exemplos de manipulação do grid e dados.
    sexta-feira, 14 de setembro de 2012 18:47
  • Falow...
    sábado, 15 de setembro de 2012 13:05
  • Pessoal isso não tem solução?
    segunda-feira, 17 de setembro de 2012 15:34
  • Pessoal isso é muito estranho, primeiro sendo um objeto como o datagrid nem deveria ser preciso fazer algo assim. Já tentou varias coisas e continua fazendo a mesma coisa duplicando os dados, e só mostra o certo quando fecho o form e abro de novo.

    Tentei da reset do bindgsource, já zerei o datasource ="" tentei colocar dois datagrids cada um com um dataadapter,dataset e bindigsource mas mesmo assim os dois apresentam o mesmo erro. Se alguem tem alguma ideia estou parado nesse caso.

    Abs

    segunda-feira, 17 de setembro de 2012 19:57
  • Tentei isso tudo é nada da certo

    DGassessor.DataSource = ""
            BSassessor.ResetBindings(False)

            DGassessor.Refresh()
            DGassessor.EndEdit()

            Sqlnomes.Fill(DsAss11)
            Sqlnomes.Update(DsAss11)
          
            ConnectionAss.Close()

            ConnectionAss.Open()


            DGassessor.DataSource = BSassessor

    terça-feira, 18 de setembro de 2012 15:11
    • Marcado como Resposta RJCERRI terça-feira, 18 de setembro de 2012 15:51
    terça-feira, 18 de setembro de 2012 15:51