Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Cursore di selezione di un dataGridView

    Salve a tutti,
    Ho bisogno del vostro aiuto in quanto ho un problema con la selezione delle righe di un dataGridView.

    Il problema è il seguente:
    Ho il seguente datagrid che contiene i dati presenti come in figura.

    Per modificare i valori presenti su una riga, l'utente effettua un doppio click sulla riga interessata e i valori della riga stessa vengono riportati all'interno di alcune Text Box dove è possibile modificarli e poi salvare le modifiche. Una volta salvate le modifiche, effettuo un REFRESH del datagrid in modo che rispecchi i valori modificati.
    Dopo il Refresh, la riga selezionata è sempre la prima, mentre io vorrei che la selezione rimanesse sulla riga appena modificata.
    Il codice che ho scritto per risolvere il problema è questo:
    codice:
    Me.DataGridTabGen.Refresh()
    Me.DataGridTabGen.CurrentRow.Selected = False
    Me.DataGridTabGen.Rows(indiceSelezione).Selected = True
    End If
    Cioè cerdo di deselezionare la prima riga (che viene selezionata dopo il refresh) e poi vado a selezionare la riga che l'utente aveva selezionato durante la modifica. Purtroppo succede quello che è possibile vedere in figura, cioè la riga evidenziata di blu è quella con codice 3, ma in realtà il datagrid considera selezionata quella con codice 1 perchè c'è la freccetta nera che sta ad indicare che è quella la riga che lui considera selezionata.
    Qualcuno può darmi una mano a capire in che modo è possibile far spostare il cursore (la freccetta nera) in modo da effettuare le operazioni sulla riga corretta?

    GRAZIE.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    5
    Per selezionare un'altra riga non c'è bisogno di deselezionare quella corrente. Per selezionarla da codice fai così:

    codice:
    DataGridTabGen.Rows(indiceSelezione).Cells(0).Selected = True
    Se imposti

    codice:
    DataGridTabGen.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    DataGridTabGen.MultiSelect = False
    verrà selezionata la riga giusta. Come indice di cells va bene uno qualsiasi purchè non sfori (ovviamente). La multiselect a false serve per evitare problemi di quale indice viene effettivamente selezionato in caso di multiselect.

    Piccola domanda: ma non ti conveniva far effettuare le modifiche da direttamente dentro il datagridview? Ti risparmiavi un bel pò di codice e non avresti avuto questo problema

  3. #3

    Moderazione

    Si parla di VB.NET?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Originariamente inviato da wipol
    Per selezionare un'altra riga non c'è bisogno di deselezionare quella corrente. Per selezionarla da codice fai così:

    codice:
    DataGridTabGen.Rows(indiceSelezione).Cells(0).Selected = True
    Se imposti

    codice:
    DataGridTabGen.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    DataGridTabGen.MultiSelect = False
    verrà selezionata la riga giusta. Come indice di cells va bene uno qualsiasi purchè non sfori (ovviamente). La multiselect a false serve per evitare problemi di quale indice viene effettivamente selezionato in caso di multiselect.

    Piccola domanda: ma non ti conveniva far effettuare le modifiche da direttamente dentro il datagridview? Ti risparmiavi un bel pò di codice e non avresti avuto questo problema
    Purtroppo non ho risolto il problema, il cursore (la frecciolina nera) rimane come in figura del mio primo post! Ho bisogno che quel cursore rimanga posizionato sulla stessa riga che l'utente modifica, mentre invece, dopo il refresh della tabella, si posiziona ancora, puntualmente, sulla riga zero.

    Piccola domanda: ma non ti conveniva far effettuare le modifiche da direttamente dentro il datagridview? Ti risparmiavi un bel pò di codice e non avresti avuto questo problema
    Non sono stato io a deciderlo

    Si parla di VB.NET?
    Certo!

  5. #5
    Risolto, riporto il forum dal quale ho ricavato la soluzione:

    http://www.dotnethell.it/forum/messages.aspx?ThreadID=29745

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.