Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione sul nostro sito accetti l'uso dei cookie. Per saperne di più leggi l'informativa sui cookie.   


vb2010 - Ottenere Indice di riga del datatable di una dgv ordinata al clic del mouse
Ultimo messaggio: 24 mag 2019 16:38 di Ato - Antonio Giornetta. 5 Risposte.
Stampa gradevole
Solo gli utenti registrati possono rispondere ad una discussione.
Avatar
Ato - Antonio Giornetta
Messaggi: 461
Iscritto dal: 30 apr 2012 00:19
Utente
Utente

12 mag 2019 17:49

Ciao a tutti
Cerco di spiegarmi meglio,

ho un datatable con alcuni record

il datatable lo associo ad una dgv(datagridview)

dgv.datasource=datatable

cosi come stanno le cose l'index row della dgv corrisponde anche all'index row del datatable

ma se clicco sull'header di una qualsiasi colonna della dgv (a patto che la dgv abbia l'opzione di ordinamento al clic sull'header) le cose cambiano perchè la dgv si è ordinata ma effettivamente non il datatable, quindi la riga n. 2 della tabella non significa che è uguale (o meglio che si tratti proprio) alla riga n. 2 del datatable associato.

Come potrei recuperare l'indice di riga del datatable in queste condizioni ?

Spero di essermi spiegato bene.

Ciao a tutti

 

 


    http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
    Avatar
    Diego Cattaruzza [exMVP]
    Messaggi: 7189
    Iscritto dal: 08 set 2012 11:22
    Team
    Team

    14 mag 2019 08:59

    potresti crearti una lista di keyvalues, se la datatable ha almeno un campo 'univoco'

    la chiave della coppia keyvalue è il valore di questo campo e il value è il numero di riga

      Diego Cattaruzza
      ex MVP Visual Basic .Net
      blog: Uncensured
      Avatar
      lorenzo001
      Messaggi: 430
      Iscritto dal: 02 giu 2013 12:35
      Utente
      Utente

      14 mag 2019 11:31

      Ma che ci fai con l'indice della riga? E' una informazione che non ha praticamente nessuna importanza pratica.

      Per effettuare operazioni sulla tabella devi avere un campo ID univoco a cui fare riferimento.

        Avatar
        Ato - Antonio Giornetta
        Messaggi: 461
        Iscritto dal: 30 apr 2012 00:19
        Utente
        Utente

        15 mag 2019 11:22
        Inviato da lorenzo001 su 14 mag 2019 12:31

        Ma che ci fai con l'indice della riga? E' una informazione che non ha praticamente nessuna importanza pratica.

        Per effettuare operazioni sulla tabella devi avere un campo ID univoco a cui fare riferimento.


        Grazie per avermi risposto.

        Ho creato una funzione che passa alla dgv un datatable

        quando l'utente da il tasto invio su una riga della dgv passo ad un'altra funzione la row del datatable associato alla tabella, che se l'utente non l'ha ordinata (facendo clic su un header di qualsiasi colonna) l'indice della riga della dgv corrisponde all'indice della riga del datatable, quindi mi viene facile passargli la row

        Dim row As DataRow = dTable(dgv.CurrentRow.Index)

         ma se l'utente ordina la dgv l'indice della riga della tabella non corrisponde più allo stesso indice del datatable. Capisco che potrei cmq trovarmelo facendo la ricerca nel campo Id del datatable dell'id prelevato dalla dgv...ma pensavo esistesse un metodo già pronto per l'uso...altrimenti ci metto un'attimo e mi creo una funzioncina che mi ritorna l'indice del datatable, perchè è impressionante la velocità delle operazioni sui datatable

        Spero di essere stato chiaro.

         

          http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
          Avatar
          GianniA
          Messaggi: 3162
          Iscritto dal: 30 apr 2012 00:14
          Socio
          Socio

          15 mag 2019 11:49
          Guarda, io credo che la seconda che hai detto sia l'unica strada praticabile certa. Se non lavori sull'ID del record avrai sempre dei grossi margini di incertezza
            Avatar
            Ato - Antonio Giornetta
            Messaggi: 461
            Iscritto dal: 30 apr 2012 00:19
            Utente
            Utente

            24 mag 2019 16:38
            Allora ragazzi ho risolto  così :

            Dim row As DataRow = dgv.SelectedRows(0).DataBoundItem.Row

            Capisco che il titolo di questa discussione cercava l'id del datatable associato alla dgv, ma in questo modo passo direttamente la row del datatable associato alla dgv anche se è ordinato al cilc sull'header di qualche colonna.

            Non so se qualcuno può cambiare il titolo..se necessario.

            Comunque grazie a tutti

            PS

            scusatemi lo so che non è la sezione giusta, ma volevo portare alla vs attenzione un mio problema nella sezione database con i log di mysql.

            Se per cortesia riuscite a dirmi qualcosa.

            Grazie di nuovo

              http://www.antoniogiornetta.it Andate sul mio sito...leggerete una bella storia a fumetti del mio paesino :)
              Solo gli utenti registrati possono rispondere ad una discussione.