VB net 2005 - DataGridview, DataTable e controllo valori su celle.

mercoledì 14 ottobre 2009 - 12.13

lorenzo.zonzin Profilo | Newbie

Salve, ho un problema legato allo spostamento all'interno di una datagridview. Segue il codice.
'----------------------------------------------------------------
Dim dS As New DataSet()
Dim dttDati As New DataTable()
Dim dA As New OleDb.OleDbDataAdapter(sql, conn)

dA.Fill(dS, "tabella")
dttDati = dS.Tables("tabella")

If dttDati.Rows.Count <= 0 Then

dttDati.Clear()
dS.Clear()

End If

grd0.DataSource = dttDati
'--------------------------------------------------------
Questo è il codice che uso per popolare una tabella, uso un dataset e un datatable, grd0 è la mia datagridview.

Ipoteticamente sulla prima colonna ho un valore, un codice, io vorrei che passando alla cella successiva o alla cella sotto o a quella sopra, sulla seconda colonna apparisse la descrizione legata a quel codice.
Posto il codice sorgente legato all'evento cell_leave della mia griglia.
'-----------------------------------------------------------------
Private Sub grd0_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grd0.CellLeave

Select Case grd0.CurrentCell.ColumnIndex
Case 0
Dim ssql As String
Dim dRead As OleDb.OleDbDataReader


If grd0.CurrentCell.RowIndex < grd0.RowCount - 1 Then
If grd0.Item(e.RowIndex, e.ColumnIndex).Value.ToString <> "" Then
ssql = "Select descr From tabella WHERE CODice = '" & UCase(grd0.Item(e.RowIndex, e.ColumnIndex).Value.ToString) & "';" '

Dim cmd As New OleDb.OleDbCommand(ssql, DbSoc)
dRead = cmd.ExecuteReader
If dRead.HasRows = True Then
dRead.Read()

grd0.Rows(e.RowIndex).Cells(e.ColumnIndex + 1).Value = dRead.Item("Descr")

Else
grd0.Rows(e.RowIndex).Cells(e.ColumnIndex + 1).Value = ""
End If
dRead.Close()
cmd = Nothing

End If
End If

End Select
End Sub
'------------------------------------------------------------------------------
Il fatto è che non visualizza nulla nella seconda colonna. E' un problema di datatable? Di dataset?
Poi se ci vogliamo pure mettere il fatto che a certe celle è associato anche l'evento doppio click che apre un'altra maschera di ricerca codici,
anche qui ho problemi legati al valore che viene passato alla cella della datagridview.

Vi ringrazio anticipatamente.



Ho risolto.
Ho aggiunto l'evento grd0.endedit() dopo le dichiarazioni nell'evento cell leave, così ho forzato lo stato della mia griglia e
il mio "grd0.Item(e.RowIndex, e.ColumnIndex).Value.ToString" risulta quello desiderato.
Ciao a tutti.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5