NULOS EM DATAGRIDVIEW
pessoal estou com um problema com campos que não tem dados ao carregar um datagridview
para carregar o datagrid uso o código:
Private Sub exibeParcelasCliente(ByVal cod As Integer, Optional ByVal flag As Boolean = True)
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String
sql = [Ô]SELECT ID,maquina,operador FROM Cadastro_maquina order by maquina[Ô]
Dim cmd As New OleDb.OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
gdvParcelas.DataSource = dt
formataGridView()
Catch ex As Exception
Throw ex
Finally
con.Close()
End Try
End Using
End Sub
no evento click do dataagrid é código é o seguinte:
Private Sub gdvParcelas_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gdvParcelas.CellContentClick
Me.txtid.Text = Me.gdvParcelas.CurrentRow.Cells(0).Value
Me.txtmaquina.Text = Me.gdvParcelas.CurrentRow.Cells(1).Value
Me.txtoperador.Text = Me.gdvParcelas.CurrentRow.Cells(2).Value
End Sub
esse evento passo os dados para os textbox mas quando é algum que não tem valor da erro
para carregar o datagrid uso o código:
Private Sub exibeParcelasCliente(ByVal cod As Integer, Optional ByVal flag As Boolean = True)
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String
sql = [Ô]SELECT ID,maquina,operador FROM Cadastro_maquina order by maquina[Ô]
Dim cmd As New OleDb.OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
gdvParcelas.DataSource = dt
formataGridView()
Catch ex As Exception
Throw ex
Finally
con.Close()
End Try
End Using
End Sub
no evento click do dataagrid é código é o seguinte:
Private Sub gdvParcelas_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gdvParcelas.CellContentClick
Me.txtid.Text = Me.gdvParcelas.CurrentRow.Cells(0).Value
Me.txtmaquina.Text = Me.gdvParcelas.CurrentRow.Cells(1).Value
Me.txtoperador.Text = Me.gdvParcelas.CurrentRow.Cells(2).Value
End Sub
esse evento passo os dados para os textbox mas quando é algum que não tem valor da erro
.toString no final
Muda o evento ao invés de CellContentClick coloque no CellClick
1 - Você atualiza os dados do grid direto no seu banco? Se não então troca o DataTable por DataReader que consome menos recurso, sendo muito mais rápido.
2- Você pode evitar problemas com nulos se tratar ele na camada DAL, logo após receber os dados do banco. Com DataReader você percorreria os registros recebidos for Foreach e passai um string.Empty no lugar dele. Ai no lugar onde você recebe o conteúdo, se tiver de ser numérico você testa se está vazio e troca por Zero, se for texto não precisa fazer nada.
2- Você pode evitar problemas com nulos se tratar ele na camada DAL, logo após receber os dados do banco. Com DataReader você percorreria os registros recebidos for Foreach e passai um string.Empty no lugar dele. Ai no lugar onde você recebe o conteúdo, se tiver de ser numérico você testa se está vazio e troca por Zero, se for texto não precisa fazer nada.
Tópico encerrado , respostas não são mais permitidas