datagridview nullreferenceexpection
Publicado por kyllo (1 intervención) el 16/08/2018 08:44:30
Buenos días, tengo un formulario que cuando lo abro, en el evento load, llamo a una funcion cargardatagriddetalle para cargar un datagridview desde una base de datos oracle, y una vez cargado le doy formato y mediante un bucle for compruebo línea por línea, si el contenido de la celda de la columna 2 está vacía o no, si no está vacía cambio el color de esa fila a verde. Esto, cuando abro el formulario por primera vez funciona sin problemas, pero si cierro el formulario (sin cerrar la aplicación) y vuelvo abrirlo, en el ir que comparo el contenido de la celda para comprobar si está vacío, me da el error nullreferenceexception, y no entiendo por que lo hace solo si abro el formulario por segunda vez, abro la primera y funciona, cierro el formulario y lo vuelvo abrir y me da ese error. Os dejo el load del formulario en cuestion y la función para cargar el datagridview, a ver si alguno sabe por que puede ser. ah el if la forma de compara la celda la hecho de todas las formas que se me ha ocurrido por si era eso, pero siempre me vuelve a dar el mismo error. Muchas gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Private Sub FrmRegistrarEquipos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'CargarDataGridDetalle(DTGVNumSerie, SqlOrigen, "NUMSERIE ASC")
If DTGVNumSerie.Rows.Count > 0 Then
DTGVNumSerie.Columns.Item(0).HeaderText = "NUM. SERIE"
DTGVNumSerie.Columns.Item(0).Width = 313
DTGVNumSerie.Columns.Item(1).HeaderText = "CODDETALLERECEP"
DTGVNumSerie.Columns.Item(1).Width = 5
DTGVNumSerie.Columns.Item(2).HeaderText = "ETPATRONATO"
DTGVNumSerie.Columns.Item(2).Width = 5
DTGVNumSerie.Columns.Item(3).Visible = F
HabilitarText(GrpBxDatos)
BtnRegistrar.Enabled = F
For i = 0 To DTGVNumSerie.Rows.Count - 1
If DTGVNumSerie.CurrentRow.Cells(2).Value.ToString <> "" Then
DTGVNumSerie.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen
'DTGVNumSerie.CurrentRow.Cells(i).ReadOnly = T
DTGVNumSerie.CurrentCell = DTGVNumSerie.Rows(i).Cells(0)
DTGVNumSerie.Refresh()
End If
Next
End If
End Sub
Public Function CargarDataGridDetalle(ByRef DataGrid As DataGridView, ByVal SQL As String, ByVal CampoOrden As String) As Boolean
Dim cmd = New OracleCommand(SQL, con)
Dim oda = New OracleDataAdapter(cmd)
Dim ds = New DataSet
Try
oda.Fill(ds)
If ds.Tables.Count > 0 Then
ds.Tables(0).DefaultView.Sort = CampoOrden
DataGrid.DataSource = ds.Tables(0).DefaultView
If ds.Tables(0).Rows.Count > 0 Then
DataGrid.Enabled = T
DataGrid.Visible = T
DataGrid.Tag = 1
If DataGrid.Tag = 0 Then
DataGrid.ClearSelection()
End If
Return T
Else
DataGrid.Visible = F
DataGrid.Enabled = F
DataGrid.Tag = 0
Return F
End If
Else
Return F
End If
Catch ex As Exception
MsgBox(ex.Message.ToString)
Return F
End Try
End Function
Valora esta pregunta
0