none
GridView atualizando todas as linhas RRS feed

  • Pergunta

  • Galera, 

    Ao atualizar o grid através do evento RowUpdating, a grid atualiza todas as linhas ao invés de atualizar somente a que eu alterei.

    Como faço para alterar apenas uma linha?

    Minha função:

     

     Public Function _cmdSelect2011() As DataTable
            Dim envioEmail As New Modulo
            Try
                Dim dt As DataTable = Nothing
                Dim ConString As String = ConfigurationManager.AppSettings("dbLocal")
                Using DBCon As New SqlConnection(ConString)
                    Dim cmd As String = "SELECT CREDOR, OUTUBRO, NOVEMBRO, DEZEMBRO FROM tbl_dividas2011"
                    DBCon.Open()
    
                    dt = New DataTable
                    Using da As SqlDataAdapter = New SqlDataAdapter(cmd, DBCon)
                        da.Fill(dt)
                    End Using
                End Using
                Return dt
            Catch ex As Exception
                envioEmail.Enviar("Erro na função _cmdSelect2011 da Classe ComandosSQL", ex)
            End Try
        End Function
    

     


    E o método que eu crio o update:

     

    Protected Sub gvContas_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvContas.RowUpdating
            Dim cmd As New ComandosSQL
            Dim dt As DataTable = Nothing
            If rblAno.SelectedValue = "0" Then
                Dim txtCredor, txtOut, txtNov, txtDez As TextBox
                Select Case ddlMes.SelectedValue
                    Case "0"
                        txtCredor = gvContas.Rows(e.RowIndex).Cells(1).Controls(0)
                        txtOut = gvContas.Rows(e.RowIndex).Cells(2).Controls(0)
                        txtNov = gvContas.Rows(e.RowIndex).Cells(3).Controls(0)
                        txtDez = gvContas.Rows(e.RowIndex).Cells(4).Controls(0)
                        dt = cmd._cmdUpdate2011(txtCredor.Text, txtOut.Text, txtNov.Text, txtDez.Text)
                    Case "10"
                        txtCredor = gvContas.Rows(e.RowIndex).Cells(1).Controls(0)
                        txtOut = gvContas.Rows(e.RowIndex).Cells(2).Controls(0)
                        dt = cmd._cmdUpdate2011(txtCredor.Text, txtOut.Text)
                    Case "11"
                        txtCredor = gvContas.Rows(e.RowIndex).Cells(1).Controls(0)
                        txtNov = gvContas.Rows(e.RowIndex).Cells(2).Controls(0)
                        dt = cmd._cmdUpdate2011(txtCredor.Text, "", txtNov.Text)
                    Case "12"
                        txtCredor = gvContas.Rows(e.RowIndex).Cells(1).Controls(0)
                        txtDez = gvContas.Rows(e.RowIndex).Cells(2).Controls(0)
                        dt = cmd._cmdUpdate2011(txtCredor.Text, "", "", txtDez.Text)
                End Select
    


     

    quinta-feira, 26 de janeiro de 2012 21:17

Todas as Respostas

  • Angelo,

     

    Blza? Aparentemente o método do que faz o update no Grid está correto, pois está chamando o evento RowUpdate do Grid, informando qual indice está sendo alterado (e.RowIndex).

    Precisa dar um olhada na instrução de Update no banco se está filtrando os campos corretamente, no caso, dentro do método cmdUpdate2011. Não sei o que tem ali dentro, mas acredito que o problema está ai.

    Bom espero ter ajudado.

     

    Abraço!


    Fernando Godoy - Blog: http://blog.lfgsistemas.com/
    sexta-feira, 27 de janeiro de 2012 16:51