Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338

    [c#] deselezionare qualsiasi cosa in una datagridview

    Ciao

    non riesco a fare in modo che una datagridview, dopo il riempimento, non presenti nessuna cella selezionata.

    ho provato con
    codice:
                    dgvArchivio.CurrentCell = null;
    e con

    codice:
                                foreach (DataGridViewRow riga in dgvArchivio.Rows)
                {
                    riga.Selected = false;
                    foreach (DataGridViewCell cella in riga.Cells)
                        cella.Selected = false;
                }
    senza ottenere nulla

    i dati sono ottenuti con un bindingsource con un datatable, nn so se ci sono altri modi..

    idee? grazie

  2. #2
    tuagriglia.ClearSelection()

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    provato, ma rimane selezionata la prima cella della prima riga.

  4. #4
    allora devi OBBLIGATORIAMENTE selezionare la FullRowSelect come behavior e displayheaderrow su false.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    porc.. nn funzia, ora all'apertura viene selezionata tutta la riga in automatico

  6. #6
    e beh mi sembra logico scateni l' evento idexchanged quando la popoli ...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    scusa, ma nn capisco:

    1 - associato alla datagridview nn esiste nessun evento Index(o ID)changed

    2 - qualunque cosa faccia per popolarla, io dopo vorrei eseguire delle istruzioni che mi cancellino la selezione... una specie di reset di indice che so..

  8. #8
    guarda non mi ricordo ilnome esatto dell' evento .. ma avviene, tranquillo.
    Dopo il caricament lancia clearselection, se non va stai facendo qualcosa ancora dopo che lo lanci ...
    Posta il codice e vediamo perchè?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    ma nn mi sembra:

    codice:
      private void frmPersonaleArchivio_Load(object sender, EventArgs e)
      {
          //  carica l'elenco record archiviati nel dgvArchivio
          CaricaRecordArchiviati();
    
          dgvArchivio.ClearSelection();
      }
    
      private void CaricaRecordArchiviati()
      {
          //  carica l'elenco record archiviati
    
          //  crea data adapter che prepara il comando sul db
          string sqlCmd = "";
    
          sqlCmd = "SELECT Anagrafiche_Archivio.Ordine AS ordine, Anagrafiche_Archivio.Ruolo AS ruolo, Anagrafiche_Archivio.DataScadenza AS 'scad. presunta', Anagrafiche_2_Archivio.Desc_aff_org AS 'afferenza org.'";
          sqlCmd += " FROM Anagrafiche_Archivio INNER JOIN Anagrafiche_2_Archivio ON Anagrafiche_Archivio.matricola = Anagrafiche_2_Archivio.matricola WHERE Anagrafiche_Archivio.matricola = '" + _matricola + "'";
          sqlCmd += " AND Anagrafiche_Archivio.Ordine = Anagrafiche_2_Archivio.Ordine";
          sqlCmd += " ORDER BY Anagrafiche_Archivio.Ordine DESC";
    
          SqlDataAdapter daArchivio = new SqlDataAdapter(sqlCmd, Program.strConnDB);
          //  crea un data table e lo popola con il risultato del comando eseguito dal data adapter
          DataTable dtArchivio = new DataTable();
          daArchivio.Fill(dtArchivio);
          //  numero risultati
          _records = dtArchivio.Rows.Count;
    
    
          //  crea un binding source e lo collega al lato dati
          BindingSource bsArchivio = new BindingSource();
          bsArchivio.DataSource = dtArchivio;
          //  collega il lato visuale del binding source al datagridview
          dgvArchivio.DataSource = bsArchivio;
          
          //  libera memoria (ove possibile)
          daArchivio.Dispose();
          daArchivio = null;
          dtArchivio.Dispose();
          dtArchivio = null;
          
          //  formattazione colonne
          dgvArchivio.Columns["ordine"].Width = 40;
          dgvArchivio.Columns["ruolo"].Width = 40;
          dgvArchivio.Columns["scad. presunta"].Width = 68;
          dgvArchivio.Columns["afferenza org."].Width = 194;
      }
    
      private void dgvArchivio_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
      {
          //  apre la scheda dati del record selezionato su doppio click header riga
          int indice = dgvArchivio.CurrentRow.Index;
    
          SelezionaRecord(indice);
      }
    
      private void dgvArchivio_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
      {
          // selezionando una cella viene selezionata in autom. l'intera riga
          dgvArchivio.CurrentRow.Selected = true;
      }

  10. #10
    Direi che forse è meglio che ti vai a studiare BindingSOurce, DataTable, persistenza dei Dati nell' UI e quant' altro ...
    Senza cattiveria ma quel codice li' ... mi spaventa e mi stupisce che funzioni ...

    Poi dove hai letto di usare quegli eventi per la selezione di una riga?
    Si usa un FullRowSelect, si associa una persistenza a livello di classe non un BindingSOurce ... e sopratutto non si cancellano i dati dell' oggetto che per associazione ByVal popola la DataGridView ...

    Ti ripeto è un consiglio non un insulto ne tantomeno un' offesa.

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.