Scorrimento barra verticale Datagridview

di il
7 risposte

Scorrimento barra verticale Datagridview

Ho 1 datagridview popolate da 2 colonne ed un altra datagridview popolata da tre colonne.
Quando faccio click sulla prima datagridview colonna 0 che rappresenta un numero da 1 a 90
e di cui quella colonna ha un valore,diciamo per esempio 69,dovrebbe selezionare nella riga corrispondente,in questo caso la riga 69,nella seconda datagridview di cui le righe sono popolate da 1 a 90,praticamente dovrebbe fare lo scroll automatico e selezionare la riga 69 ma non lo fà,se vado a vedere manualmente,la riga è selezionata.
numeri.JPG
numeri.JPG

Ho provato a cercare ma non ho trovato niente.
Idee?suggerimenti?

7 Risposte

  • Re: Scorrimento barra verticale Datagridview

    Non ho provato, ma dai uno sguardo alla proprietà DataGridView.FirstDisplayedScrollingRowIndex
  • Re: Scorrimento barra verticale Datagridview

    Grazie ma avevo già provato ma falsa una riga in più,tanto per capirsi se nel primo datagridview premo sul numero 22
    mettendo in pratica quello suggerito da te,si posiziona sul numero 23.
    Ho risolto in questo modo,non è che mi piace molto ma non ho trovato altra soluzione.
    
    Dim myriga As Integer = 0
            Dim mynumero As Integer = 0
            myriga = DataGridView1.CurrentCell.RowIndex ' assegno il numero di riga dove ho fatto cilck sul numero interessato
            mynumero = CInt(DataGridView1.Item(0, myriga).Value) ' si commenta da solo
            ' è questa è la soluzione che funziona
            For i = 1 To 90
                If CInt(dtgRitardi.Item(0, i - 1).Value) = mynumero Then
                    dtgRitardi.FirstDisplayedScrollingRowIndex = i - 1
                    dtgRitardi.Item(0, i - 1).Selected = True
                End If
                    next
    

    numeririt.JPG
    numeririt.JPG

    come si vede,funziona.
  • Re: Scorrimento barra verticale Datagridview

    SISTEMISTA ha scritto:


    ...se nel primo datagridview premo sul numero 22
    mettendo in pratica quello suggerito da te,si posiziona sul numero 23...
    Quello perché la base degli array è sempre 0 e non 1. La prima riga avrà indice 0, la seconda indice 1 e così via...
  • Re: Scorrimento barra verticale Datagridview

    Non è come dici tu,anche mettendo myriga a -1(dovuto a rowindex)non funziona,prova per tua informazione.
  • Re: Scorrimento barra verticale Datagridview

    Non capisco... Ho provato e funziona come mi aspetto io:
    1) Nella prima griglia ho dei numeri compresi tra 1 e 90;
    2) Nella seconda ho tutti i numeri da 1 a 90;
    3) seleziono un numero N nella prima griglia, e la seconda scrolla e seleziona correttamente se scelgo la riga con indice N-1.

    Nel tuoo screenshot hai selezionato il numero 89, quindi nella seconda griglia (avendoli in ordine crescente) devi per forza selezionare la riga con indice 88. Essendoci 90 numeri, gli indici andranno da 0 a 89...

    Può essere che nella seconda griglia non ci siano tutti i numeri da 1 a 90? Nel qual caso si che c'è uno scostamento diverso da -1 tra il numero selezionato e l'indice della DataGridView...
  • Re: Scorrimento barra verticale Datagridview

    Allora,i numeri ci sono tutti ma secondo me il problema è nella prima datagridview in quanti i numeri da 1 a 90 non sono in ordine crescente ma sono in ordine sparso per via della seconda colonna che mi mette in ordine crescente la uscite dei numeri..tanto per capirsi
    prima datagridview1
    
     Dim myriga As Integer = 0
            Dim mynumero As Integer = 0
            myriga = DataGridView1.CurrentCell.RowIndex
            mynumero = CInt(DataGridView1.Item(0, myriga).Value)
            '  For i = 1 To 90
            'If CInt(dtgRitardi.Item(0, i - 1).Value) = mynumero Then
            'dtgRitardi.FirstDisplayedScrollingRowIndex = i - 1
            ' dtgRitardi.Item(0, i - 1).Selected = True
            ' End If
            'Next
            ' dtgritardi è la seconda datagridview dove avviene lo scrolling
            dtgRitardi.FirstDisplayedScrollingRowIndex = mynumero
            dtgRitardi.Rows(mynumero).Cells(0).Selected = True
    colonna zero      colonna1     datagridview1
    numero              uscite
    27                       55
    36                        55
    19                        62
    etc.etc.
    
    esegueno il codice di sopra si posiziona alla riga successiva al numero,cliccando sul numero 36 si posiziona al 37.
    spero di avere reso chiaro la situazione,prova e vedrai che è come dico io.
  • Re: Scorrimento barra verticale Datagridview

    SISTEMISTA ha scritto:


    ...esegueno il codice di sopra si posiziona alla riga successiva al numero,cliccando sul numero 36 si posiziona al 37.
    spero di avere reso chiaro la situazione,prova e vedrai che è come dico io.
    Si così è corretto. Stiamo dicendo la stessa cosa.

    Solo che allora non ho capito cosa non funzionava qui:

    SISTEMISTA ha scritto:


    Non è come dici tu,anche mettendo myriga a -1(dovuto a rowindex)non funziona,prova per tua informazione.
    L'ordine nella prima griglia è ininfluente. Dato che nella seconda ci son tutti e sono ordinati (non lo credevo visto il ciclo For, ma ora lo hai commentato), l'indice della seconda griglia sarà sempre il valore clickato nella prima decrementato di uno...
Devi accedere o registrarti per scrivere nel forum
7 risposte