none
Colonna datagrid che non vuole nasconder C# RRS feed

  • Domanda

  • Salve, ho un problema che non riesco a risolvere.

    Ho un datagrid, sul quale carico dei dati provenienti da un datatable,  datatable che a sua volta vine caricato da un database.

    Ho un problema però con la prima colonna che non riesco in nessun modo a nascondere nel datagrid, è la prima colonna contenente l'id del database e anche del datatable, che normalmente viene sempre nascosto.

    Teoricamente dovrebbe essere abbastanza semplice, ovvero

    dataGridView1.Columns["Id"].Visible=false;

    o dato che parliamo della prima colonna quindi con indice zero anche:

    dataGridView1.Columns[0].Visible=false; 

    In pratica però non funziona, mi funziona con tutte le colonne tranna la prima contenente l'id.

    Mi stà sfuggendo qualcosa?

    Grazie.









    mercoledì 24 luglio 2019 12:15

Risposte

  • Qualsiasi Select * FROM può essere trasformata in Select NomeCampo1, Nomecampo2, ..., NomecampoN FROM.

    E qualsiasi utility usi per gestre il database ti fa lo script in automatico quindi non puoi neppure addurre come scusa che è lungo da fare.

    Se vuoi creare un programma direi che non dovrebbe essere così difficile farlo.

    saluti

    p.s.

    Cambiare la forma di un database solo per fare una Select * FROM è alquanto inopportuno perché se un tuo collega avesse un problema analogo o semplicemente tu volessi fare una altra lista con diverso ordine, cambiare la forma del database per una lista è ridicolo, oltre ad essere pericoloso perché quando tu sposti una colonna, normalmente SQL Server Crea una nuova tabella, vi sposta tutto il contenuto della vecchia e poi butta la vecchia tabella.

    Vedi un po' tu


    Sabrina C. - http://www.dotnetwork.it


    venerdì 26 luglio 2019 08:02

Tutte le risposte

  • Aggiornamento, ho provato ad utilizzare l'istruzione

    dataGridView1.Columns.Remove("id");

    e la colonna è sparita.

    Il problema è che la  seconda colonna  anche questa nascosta, dopo l'istruzione sopra è diventata la prima colonna e quindi da nascosta è tornata visibile.

    In pratica non mi riesce nascondere la prima colonna qualunque essa sia.

    Suggerimenti?

    mercoledì 24 luglio 2019 20:03
  • Dunque,

    considerato che la tua datasource è una DataTable e quindi deriva da una Select fatta su un database, se la DataGridView pretende che la prima colonna sia per forza visibile io al tuo posto cambierei semplicemente l'ordine delle colonne nella query SQL ovvero se al momento la query è:

    SELECT
       id,
       campo1,
       campo2,
       campo3,
       campo4,
    FROM
       MiaTabella
    

    Lo trasformerei in

    SELECT
       campo2,
       campo3,
       campo4,
       id,
       campo1
    FROM
       MiaTabella

    In modo tale che da poter nascondere le colonne 3 e 4 contenenti i campi che non vuoi vedere.


    Sabrina C. - http://www.dotnetwork.it

    giovedì 25 luglio 2019 09:58
  • Intanto grazie per avermi risposto.

    In realtà la select sul database è del tipo

    select * from VendorProduct order by ....

    questo perchè carico tutta la tabella, senza specificare campo per campo.

    Però ho fatto un altra cosa, non sò se sbagliando opure no, ma ho invertito direttamente le colonne nella tabella del database, mettendo come prima colonna una colonna che mi serve visualizzare nel datagrid, in questo modo ho apparentemente messo una pezza al problema.

    Ciò non toglie che comunque la prima colonna del datagrid deve comunque potersi nascondere, visto che funzionano tutti i suoi attributi, tranne il .visible, e mi piacerebbe scoprire il perchè.

    giovedì 25 luglio 2019 17:02
  • Qualsiasi Select * FROM può essere trasformata in Select NomeCampo1, Nomecampo2, ..., NomecampoN FROM.

    E qualsiasi utility usi per gestre il database ti fa lo script in automatico quindi non puoi neppure addurre come scusa che è lungo da fare.

    Se vuoi creare un programma direi che non dovrebbe essere così difficile farlo.

    saluti

    p.s.

    Cambiare la forma di un database solo per fare una Select * FROM è alquanto inopportuno perché se un tuo collega avesse un problema analogo o semplicemente tu volessi fare una altra lista con diverso ordine, cambiare la forma del database per una lista è ridicolo, oltre ad essere pericoloso perché quando tu sposti una colonna, normalmente SQL Server Crea una nuova tabella, vi sposta tutto il contenuto della vecchia e poi butta la vecchia tabella.

    Vedi un po' tu


    Sabrina C. - http://www.dotnetwork.it


    venerdì 26 luglio 2019 08:02