+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

[Vb.net] Problema con associazione textbox a DataGridView

  1. #1
    sileno non è in linea Novello
    Salve a tutti,

    Ho un problema con un applicazione che sto creando collegata ad un Db in Access usando BindingSource e bindinNavigator.

    Utilizzando DataGridView cliccando sui record di mio interesse mi si apre un altro form che mi riporta i dati, il problema è che se clicco su di un altro record della datagridview mi riporta sempre i dati, sul secondo form, del primo record.

    Vi posto il codice:
    TextBox1.DataBindings.Add(New Binding("Text", AmiciDataSet, "Amici.Nome"))

    sapete dirmi cosa sbaglio?

    Grazie mille

  2. #2
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da sileno Visualizza il messaggio
    Salve a tutti,

    Ho un problema con un applicazione che sto creando collegata ad un Db in Access usando BindingSource e bindinNavigator.

    Utilizzando DataGridView cliccando sui record di mio interesse mi si apre un altro form che mi riporta i dati, il problema è che se clicco su di un altro record della datagridview mi riporta sempre i dati, sul secondo form, del primo record.

    Vi posto il codice:
    TextBox1.DataBindings.Add(New Binding("Text", AmiciDataSet, "Amici.Nome"))

    sapete dirmi cosa sbaglio?

    Grazie mille
    dovresti essere più chiaro.ogni volta che fai il click sul datagridview mi sembra palese che hai attivato nell'evento click del datagridview
    la presentazione del form secondario e comunque,non avertene a male
    hai provato a cercare sul forum?ci sono svariati esempi e poi non
    è chiaro questo
    TextBox1.DataBindings.Add(New Binding("Text", AmiciDataSet, "Amici.Nome"))
    
    cerca sul forum,trovi diversi esempi e spiegazioni,se proprio non
    ci riesci vedremo di aiutarti.

  3. #3
    sileno non è in linea Novello
    Ciao sistemista,

    grazie per la risposta.

    perdonatemi se non sono stato molto chiaro, cmq hai centrato perfettamente quello che ho creato nell'applicazione ovvero: nella dataGridview all'evento doppio click si apre un form secondario nel quale ho associato i campi della tabella del Db alle textbox.

    Il problema è che se clicco in qualsiasi delle celle della datagridview mi restituisce sempre i valori della prima cella.

    Possibile che l'errore sia nel DGV?

  4. #4
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Possibile che l'errore sia nel DGV?
    No, non e possibile.
    Secondo me, il binding non c'entra niente.
    Binding source e stato dichiarato nella prima form, e non e visibile nella seconda, perche sono 2 class diversi.
    Sono convinto che stai popolando indipendentemente il dataset nella form2, e aspetti che per il miracolo si posiziona sulla riga selezionata nel form1.
    In questi casi non devi popolare di nuovo il dataset nella form2 ma semplicemente passare il record selezionato nella form1, alla form2.
    Per passare un record(row) nella form 2 ti consiglio di creare la proprietà es. MyRow.
    Posto l'esempio della form 2.
    Public Class Form2
    'il row passato per la modifica
    Dim rw As Contatti1DataSet.ContattiRow = Nothing
    ''' <summary>
    ''' Serve per passare il row al form corrente.
    ''' </summary>
    ''' <value>datarow da modificare</value>
    ''' <remarks></remarks>
    Public WriteOnly Property myRow() As MyDataSet.MyTableRow
       Set(ByVal value As MyDataSet.MyTableRow)
       'se il row non e null, possiamo 
       'proseguire al binding
       If Not value Is Nothing Then
          'pulizia bindings esistenti
          IDTextBox.DataBindings.Clear()
          'assegnazione valore alla variabile locale
          rw = value
          'creazione dei bindings
          TextBox1.DataBindings.Add(New Binding("Text", rw, "ID"))
          TextBox2.DataBindings.Add(New Binding("Text", rw, "Nome"))
          TextBox3.DataBindings.Add(New Binding("Text", rw, "Cognome"))
       End If
    End Set
    End Property
     
    'importante! alla chiusura eseguire EndEdit
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles   Me.FormClosing
         'convalida la form
         Me.ValidateChildren()
         'se il row non e nothing, viene chiamato
         ' "fine modifica" per aggiornare il row
         If Not rw Is Nothing Then rw.EndEdit()
    End Sub
    End Class
    
    Per chiamare form2 dalla form1:
        Dim frm As New Form2
        Dim dr As DataRow = DirectCast(MyBindingSource.Current, DataRowView).Row
        frm.myRow = CType(dr, MyDataSet.MyTableRow)
        frm.ShowDialog()
    
    E indispensabile studiare OOP(Object Oriented Programming) per programmare in VB.NET.
    ℹ️ Leggi di più su bumm ...

  5. #5
    sileno non è in linea Novello
    Ciao bumm,

    grazie molte per la tua cortese risposta.

    Avevo limitato il codice soltanto all'abbinamento delle textbox al dgv.

    Utilizzando il tuo codice, cliccando sul run, mi manda in errore l'applicazione segnalandomi:

    "Impossibile stabilire l'associazione alla proprietà o alla colonna Cognome di DataSource. Nome parametro: dataMember"

    e i borda di giallo il comando:

    frm.ShowDialog()

    Sapresti dirmi, cosa ho sbagliagto adesso?

    Ti ringrazio nuovamente per la disponibilità dimostratami.

  6. #6
    sileno non è in linea Novello
    Come non detto!non ho guardato bene il codice.

    Bumm, ti ringrazio nuovamente!

    sapresti dirmi dove posso trovare qualche guida in merito al codice che mi hai postato?

  7. #7
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    ℹ️ Leggi di più su bumm ...

  8. #8
    sileno non è in linea Novello
    Grazie di nuovo Bumm per la disponibilità e pazienza.

    Leggendo il codice ho visti che visualizza soltanto i record inj cui tutti i campi sono compilati.......ho necessità di gestire anche record in cui alcuni campi non presentano nessun dato.

    Ho provato a modificare il codice che mi hai postato ma ho causato soltanto errori....potresti darmi qualche altra dritta?

  9. #9
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Ok. Eccoti un'altra dritta:
    Tutti i campi hanno un valore... chioe il campo "non compilato" ha un valore DbNull.

    Ho provato a modificare il codice che mi hai postato ma ho causato soltanto errori....
    bhe... vorrei sapere come hai provato...

    Non aspettare il codice bello e pronto. Lo dovresti creare tu. E noi, sul forum ti possiamo solo "spingere" nella direzione giusta.
    ℹ️ Leggi di più su bumm ...

  10. #10
    sileno non è in linea Novello
    Ciao bumm,

    hai perfettamente ragione, il grado che vorrei raggiungere è proprio quello di diventare autonomo!

    Ho modificato il codice in questa maniera:

    Codice Form1 con DGV:

    Public Class Form2
    'il row passato per la modifica
    Dim rw As Contatti1DataSet.ContattiRow = Nothing
    ''' <summary>
    ''' Serve per passare il row al form corrente.
    ''' </summary>
    ''' <value>datarow da modificare</value>
    ''' <remarks></remarks>
    Public WriteOnly Property myRow() As MyDataSet.MyTableRow
       Set(ByVal value As MyDataSet.MyTableRow)
            'assegnazione valore alla variabile locale
          rw = value
          'creazione dei bindings
          TextBox1.DataBindings.Add(New Binding("Text", rw, "Nome_Colonna"))
          TextBox2.DataBindings.Add(New Binding("Text", rw, "Nome_Colonna"))
          TextBox3.DataBindings.Add(New Binding("Text", rw, "Nome_Colonna"))
       End If
    End Set
    End Property
     
    Mentre nel secondo:
     
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles   Me.FormClosing
         'convalida la form
         Me.ValidateChildren()
              rw.EndEdit()
    End Sub
    End Class
    
    Ultima modifica di elisab; 30-01-2011 20:06  Motivo: tag

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Associazione TextBox
    Da Luca Cannavò nel forum Visual Basic .Net
    Risposte: 6
    Ultimo Post: 04-02-2015, 19:56
  2. Filtro datagridview con due textbox
    Da Savona63 nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 23-08-2011, 09:45
  3. Risolto: Datagridview e textbox
    Da AlbiCodex nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 05-07-2010, 19:59
  4. [VB.net] Consiglio su combobox e associazione textbox.
    Da pesmons nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 10-09-2008, 18:26
  5. Associazione TextBox con DataGridView
    Da nioMatrix nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 27-06-2006, 09:08