Carica dati da cell click del dgv

di il
7 risposte

Carica dati da cell click del dgv

Ciao a tutti, premetto che con i vostri suggerimenti ho sempre risolto, quindi possibilmente ne approfitto ancora.

Sto aggiornando un vecchio programmino per l'officina sotto casa ed il problema è questo.
con questo codice mi carico i dati in un datagrid per effettuare una ricerca
 Private Sub BTNtrova_Click(sender As Object, e As EventArgs) Handles BTNtrova.Click
        If TBtrova.Text = Nothing Then
            MsgBox("Inserire il campo per la ricerca!", MsgBoxStyle.Exclamation)
            Exit Sub
        Else
            myConnection.ConnectionString = connString
            myConnection.Open()
            Dim trova As String
            trova = "SELECT *FROM Clienti WHERE Cognome=@Cognome OR Societa=@Societa OR Piva=@Piva"
            Dim cmd As OleDbCommand = New OleDbCommand(trova, myConnection)
            cmd.Parameters.AddWithValue("@Cognome", TBtrova.Text)
            cmd.Parameters.AddWithValue("@Societa", TBtrova.Text)
            cmd.Parameters.AddWithValue("@Piva", TBtrova.Text)
            readuser = cmd.ExecuteReader()
            Me.DGVtrova.Rows.Clear()
            While readuser.Read()
                DGVtrova.Rows.Add(readuser("ID"), readuser("Cognome"), readuser("Nome"), readuser("Societa"), readuser("Piva"))
            End While
            myConnection.Close()
        End If
    End Sub
fatto ciò, nell'evento cellclick metto il codice sotto per ricaricare i dati nel form di mio interesse
Private Sub DGVtrova_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVtrova.CellClick
        On Error Resume Next
        Clienti.TBid.Text = DGVtrova.Rows(e.RowIndex).Cells(0).Value
        Me.Close()
    End Sub
quello che vorrei fare io è: visto che la ricerca la effettuo per pochi campi e non è di mio interesse popolare il dgv con tutti i dati, posso tramite il cellclick inserire tutti i dati letti dal readuser e inserirli nelle textboxe senza averli nel datagrid? cioè, il reader legge 10 campi ma nel dgv ne carico 3 solo per verificare, poi clicco e metto tutti e 10 nelle textboxe

ho provato sostituendo Clienti.TBid.Text = readuser("ID")
ma ovviamente non carica perchè credo che il readuser mi risulti vuoto... posso farlo oppure devo popolare tutto il dgv e quindi caricarlo aggiungendo i campi?

spiegazione un po contorta me ne rendo conto....

7 Risposte

  • Re: Carica dati da cell click del dgv

    Niente, per ora ho caricato tutti i dati nel datagid e li ho trasportati come scritto dal cellclick alle textboxe del form interessato, poi se esce un metodo diverso faccio la modifica...
  • Re: Carica dati da cell click del dgv

    Ciao Orione,

    "caricato tutti i dati nel datagid " che significato ha questa frase ??? Nella grid hai i dati che ti servono e basta o ti porti dietro più di quanto vedi e che poi utilizzi in seguito alla selezione ???

    Perchè non dichiari semplicemente nella tua SELECT i dati che usi invece di caricarti il tutto con l'istruzione " *" che comporta il caricamento di tutte le colonne della tabella "Clienti" a meno che non ti servano poi in seguito ...

    Byeee
  • Re: Carica dati da cell click del dgv

    Quel che sfugge a me è come hai impostato il Form...
    Tu hai una DGV con tutti i record e solo qualche campo di tuo interesse, e poi hai le varie TextBox che mostrano i dettaglio completo della riga selezionata nella DGV?

    Se è così ti devi appoggiare ad una tabella (magari passando per un TableAdapter.Fill() ) in cui memorizzare i dati provenienti dalla query. Poi la associ alla DGV.DataSource e al SelectionChanged (magari impostando DGV.SelectionMode = FullRowSelect?)ricopi i dati nelle TextBox prendendoli dalla tabella.
  • Re: Carica dati da cell click del dgv

    Mi spiego meglio, a me servono tutti i dati della lettura, il dgv lo uso perchè per esempio se cerco Marco Rossi, potrei averne piu di uno quindi per essere sicuro che sia quello corretto metto anche altri valori come cod. Fiscale o p.iva quindi ho la certezza di quello che seleziono. Non ho necessità in teoria di vedere tutto tutto nel dgv. Solo che quando clicco poi devo ricaricare tutti i campi letti ognuno nella propria textboxe. Caricare 10 o 12 campi non è un problema, volevo solo semplificare, non penso nello stesso posto di avere 100 o 200 Marco Rossi ovviamente
  • Re: Carica dati da cell click del dgv

    Quindi avevo immaginato giusto...

    Secondo me, se fai come ti ho suggerito risolvi il problema e non devi nemmeno poi effettuare nessuna ricerca. Basta sfruttare il DGV.SelectedRows(0).DataBoundItem per avere facilmente la riga della tabella associata alla selezione della DGV.

    Basta nascondere le colonne della DGV che non interessano. Anche se probabilmente si può associare la tabella alla DGV, nonostante quest'ultima mostri solo un sottogruppo delle colonne presenti nella tabella.
  • Re: Carica dati da cell click del dgv

    Ciao, no forse mi sono spiegato male, la ricerca mi serve, certo che devo farla, metti che ho piu campi simili....
    il fatto è che ovviamente il dgv è sempre vuoto, lo popolo solo ed esclusivamente quando faccio una ricerca, poi dal cellclick ricarico i dati del click che ovviamente è esatto avendo controllato a vista... io volevo caricare 3 o 4 dati len dgv e poi mediante l'id che è univoco ovviamente ricaricare tutto nelle textboxe, quidi ho pensato che nel cellclick potrei mettere un SELECT per id, rileggere e caricare, forse è la via piu semplice e rapida.... avevo provato come specificato sopra ma ovviamente il readuser che ha i dati poi è in una sub diversa e la connessione è chiusa quindi penso sia quello il motivo perchè non ritrovo i dati.
    Ho pensato a quest'ultima soluzione.... volevo ottimizzare con meno comandi possibili....

    Grazie per le idee
  • Re: Carica dati da cell click del dgv

    Mi sono spiegato male...

    Tu effettui la ricerca e popoli la DGV, associandola ad una tabella.
    Ipotizziamo che tu ricerchi tutti i record che hanno come cognome il valore "*rossi*": la tabella avrà solo i record corrispondenti ai criteri di ricerca, con tutti i campi di tuo interesse, ma la DGV mostrerà solo i campi che ti permettono di effettuare il controllo "a vista". Al click sulla DGV, prendi la DataRow associata alla riga selezionata (che avrà tutti i campi anche se non li vedi) e la usi per popolare tutti i controlli della form.
Devi accedere o registrarti per scrivere nel forum
7 risposte