PDA

View Full Version : [VB] Creare eventi su un "DataGrid", molto interes


race2
07-05-2002, 15:17
Ho visto dei programmi in VB che al click su una cella di un "DataGrid", si apre un altro "Form" con all'interno visualizzati i dati della riga cliccata, vorrei ottenere questo, solo che non trovo i comandi per farlo, uso il "Visual Studio .NET", sono in mano vostra.

tas
07-05-2002, 21:50
Fondamentalmente devi rispondere ad un evento del mouse quando il puntatore si trova dentro una particolare cella. Ho dato uno sguardo veloce al controllo, prova cosė:

Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown
Dim col As Integer
Dim row As Integer
Dim ht As DataGrid.HitTestInfo

ht = DataGrid1.HitTest(e.X, e.Y)

col = ht.Column
row = ht.Row

Debug.WriteLine("Col=" & col.ToString & vbTab & "Row=" & row.ToString)
End Sub

Quando arriva un evento MouseDown, la procedura grazie alla funzione HitTest determina la colonna e la riga della cella cliccata. A questo punto, in base ai valori ottenuti, č facile chiamare o meno un particolare form associato...

race2
07-05-2002, 22:17
Originariamente inviato da tas
[B]Fondamentalmente devi rispondere ad un evento del mouse quando il puntatore si trova dentro una particolare cella. Ho dato uno sguardo veloce al controllo, prova cosė:

Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown
Dim col As Integer
Dim row As Integer
Dim ht As DataGrid.HitTestInfo

ht = DataGrid1.HitTest(e.X, e.Y)

col = ht.Column
row = ht.Row

Debug.WriteLine("Col=" & col.ToString & vbTab & "Row=" & row.ToString)
End Sub

Quando arriva un evento MouseDown, la procedura grazie alla funzione HitTest determina la colonna e la riga della cella cliccata. A questo punto, in base ai valori ottenuti, č facile chiamare o meno un particolare form associato...

PERFETTO!!!!!!!!!!
Funziona benissimo, guarda lo ho collocato in questo modo:

-----------------------------------------------------------------------------------
Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown
Dim col As Integer
Dim row As Integer
Dim ht As DataGrid.HitTestInfo
Dim ds As DataSet

Dim dap As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM clienti", conn)
dap.TableMappings.Add("Table", "clienti")
ds = New DataSet()
dap.Fill(ds)
DataGrid1.DataSource = ds.Tables("clienti")



ht = DataGrid1.HitTest(e.X, e.Y)
col = ht.Column
row = ht.Row
Debug.WriteLine("Col=" & col.ToString & vbTab & "Row=" & row.ToString)
MessageBox.Show(col.ToString & row.ToString)
End Sub
-----------------------------------------------------------------------------------

Solo una cosa, in quale modo posso fare una query della riga cliccata ???

-----------------------------------------------------------------------------------
Dim sql As String = "SELECT * FROM Tabella WHERE id = " & ID & " "
-----------------------------------------------------------------------------------

Come posso passargli quell'ID ???

tas
07-05-2002, 23:16
Non per metterti la pulce nell'orecchio, ma sulla documentazione di MSDN ho trovato una cosa interessante, MOLTO interessante! Ti riporto una parte del testo:

Il controllo System.Windows.Forms.DataGrid consente di visualizzare collegamenti alle tabelle figlio simili a quelli ipertestuali. Č possibile fare clic su un collegamento per passare alla tabella figlio. Quando viene aperta una tabella figlio, nel titolo viene visualizzato un pulsante che consente di ritornare alla tabella padre. I dati delle righe padre vengono visualizzati sotto la didascalia e sopra le intestazioni di colonna. Č possibile nascondere le informazioni della riga padre facendo clic sul pulsante a destra del pulsante Indietro.

Per ora non ti so dire nulla di pių, ma in sostanza fa quello che hai bisogno tu senza nemmeno scrivere una riga di codice!

race2
08-05-2002, 10:37
Originariamente inviato da tas
[B]Non per metterti la pulce nell'orecchio, ma sulla documentazione di MSDN ho trovato una cosa interessante, MOLTO interessante! Ti riporto una parte del testo:

Per ora non ti so dire nulla di pių, ma in sostanza fa quello che hai bisogno tu senza nemmeno scrivere una riga di codice!

Passami il link.........

tas
08-05-2002, 11:45
Non ho trovato in msdn.microsoft.com la stessa cosa che ho sul DVD di MSDN, comunque guarda questi link:

http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconUsingDataGridControl.asp

http://msdn.microsoft.com/library/en-us/dbgrid98/html/vbctlDataGridControl.asp

Ovviamente in inglese...

race2
10-05-2002, 10:56
Scusate la mia ignoranza ma e' solo un mese che sono sopra al VB.NET e prima usavo il PHP, e non riesco a concludere questo DataGrig, ti ringrazio tas per i link, ma non sono riuscito a ricavarvi nulla, ho troppa poca esperienza, non mi daresti un altra spintarella???