[RISOLTO] Info.dataGridView

di il
8 risposte

[RISOLTO] Info.dataGridView

Ciao ragazzi, eccomi con la mia prima domanda su C#.
In un form ho inserito una dataGridView con un numero prefissato di colonne ( di tipo string, data, ora, booleane e combobox , le righe invece non saranno prefissate perché devo dare all'utente la possibilità di inserire/modificare le varie celle di questa dataGridView ( quindi le righe possono aumentare ed anche diminuire in base alla necessità dell'utente.. che sarei poi io ). Su questa dataGridView devo poi avere la necessità di poter fare dei filtri, stamparla, importare/esportare su un file che mi faccia da archivio(non è propriamente la parola giusta.) , diciamo fare un modo che all'atto dell'apertura del Form (..Form1_Load..) mi riempi la dataGridView con in dati salvati sul file esterno.
Parto quindi con le domande generali ( non sul codica da scrivere, quello voglio cercare pian piano di farlo io se riesco ) .. :
  • Che tipo di file "esterno" consigliate? Pensavo a qualcosa di leggero, non ho la necessità di lavorare su quel file, mi deve fare solo da archivio. Il file poi andrà messo su un server in rete;
  • Si può usare solo una dataGridView da sola o bisogna per forza associarla ad una dataTable e/o dataSet etc etc ? . Questo tenendo conto che poi dovrò farci dei filtri su questo dataGridView in base ai valori appunto contenuti nelle varie celle
  • Ho già visto che stampare una dataGridView è un po' una rogna.. per cui pensavo di crearmi un file (magari Excel) da usare come "template di stampa" (quindi mettendogli già un'intestazione, eventuali loghi, etc etc ) e riempire le celle di questo file con i dai della dataGridView. Dite può essere un'idea o consigliate qualche altra alternativa?
Grazie, ciao.

8 Risposte

  • Re: [RISOLTO] Info.dataGridView

    Direi che, prima di tutto: il regolamento!
    Una domanda per thread... E qui ce ne sono almeno 4
    In questa discussione mi atterrei ai dubbi sul controllo dgv. Per il resto aprirei altre discussioni, anche se prima di aprirle acquisterei un libro e lo leggerei da cima a fondo. Così ti fai un'idea se ti serve più un file o un DB, come gestire una stampa (che non è gran cosa se non si hanno pretese grafiche incredibili) e così via...

    Ad occhio, quel che potrebbe bastarti è una classe per organizzare i dati letti, una lista di oggetti di quella classe in cui caricare i dati dal file/DB e da bindare alla dgv e poi studiare LINQ per i filtri.

    Così a braccio... Si potrebbe stare qui mesi a parlare di cosa sia meglio o peggio, ma dipende molto dalle tue esigenze/capacità.
  • Re: [RISOLTO] Info.dataGridView

    Ciao Sgrubak, innanzitutto ti ringrazio per la risposta .
    Scusate pensavo di non aver violato il regolamento, io intendevo fosse tutto riferito/incentrato sulla dataGridView anche perché non volevo creare 3 o 4 post che facessero riferimento uno con l'altro. Ad ogni modo Mea Culpa.
    Ho acquistato un libro (consigliato qui sul Forum) che parte dalle basi del C# e lo sto leggendo ma per ora, e mi sembra in tutto libro, non tratta questi argomenti, però volevo già iniziare a "smanettare", si sa che alla fine "l'appetito vien manguando", poi in futuro ne acquisterò altri.

    Riformulo la domanda quindi incentrandola solo sul discorso dgv, cioè se può "lavorare da sola", tenendo conto di quello che poi ci devo fare (filtri, stampa, importa/esporta, stampa) o è più corretto associarlo ad un dataTable?.

    Io, al momento, non ho grandi esigenze perché le mie capacità nella programmazione sono un po' scarse.

    Grazie ancora, buon pomeriggio.
  • Re: [RISOLTO] Info.dataGridView

    stevign76 ha scritto:


    ...se può "lavorare da sola", tenendo conto di quello che poi ci devo fare (filtri, stampa, importa/esporta, stampa) o è più corretto associarlo ad un dataTable?....
    La domanda di per sé è ambigua. Può lavorare sia da sola che associata.
    Lavorando "da sola" sarai tu ad inserire le righe a runtime, sarai tu a cancellarle e sarai tu a dire come modificare i dati salvati. Personalmente lo trovo troppo macchinoso.

    Associandola (che è il metodo che io preferisco) hai meno codice da scrivere perché non di devi curare di svuotare la griglia, riempirla di nuovo, eccetera...
    Come suggerivo prima, disegna una classe che organizzi i dati in arrivo (se da file o da DB lo deciderai quando conoscerai entrambi i sistemi e scoprirai quale fa al caso tuo), crei una List<T> che tenga conto delle varie istanze degli oggetti creati e la associ alla proprietà DataGridView.DataSource. Come vedi è una proprietà di tipo Object, quindi puoi assegnare qualsiasi riferimento (List<T> o DataTable che sia).
    Se imposti correttamente i nomi delle proprietà della classe, non ti serve nemmeno creare le colonne. Fa tutto in automatico. È ovvio che se son colonne tipo delle combobox, il discorso cambia.
    Per filtrarla ti basta LINQ. Per stamparla il discorso può cambiare o meno a seconda di come strutturi la classe ed i relativi metodi.

    So che la voglia di pigiare sulla tastiera è dirompente, ma se c'è una cosa che ho imparato a mie spese è che conviene PRIMA leggere e POI scrivere il codice, o ti ritrovi a riscriverlo n-mila volte per correggere errori banali ma che in realtà incasinano tutto. Vige la regola del "Chi ben comincia è a metà dell'opera".
  • Re: [RISOLTO] Info.dataGridView

    Per imparare come usare oggetti specifici ,come la datagriview, ti direi di leggere prima di tutto la documentazione su microsoft relativa alla classe in questione,quindi i costruttori ,le principali proprietà ,i metodi , gli eventi ,
    spesso esiste un esempio relativo alla classe che racchiude ed esemplifica alcuni dei concetti fondamentali dell'oggetto
  • Re: [RISOLTO] Info.dataGridView

    Ciao, grazie ad entrambe . Mi sono reso conto che probabilmente non vi ho indicato un’informazione che poteva essere utile , mai dare nulla per scontato ma questo è sicuramente colpa della mia esperienza.
    Quello che in effetti non vi ho detto ( più che altro forse non ho specificato bene ) è che io devo poter modificare (da tastiera/mouse) questa dataGridView. Poi come dicevo, poterla salvare in modo che poi al successivo riavvio dell’applicazione mi ritrovo la datGridView aggiornata ( quello che io intendevo come esporta/importa.
    Se invece ho detto una cosa ovvia fate finta che non ho detto nulla
  • Re: [RISOLTO] Info.dataGridView

    stevign76 ha scritto:


    ...Poi come dicevo, poterla salvare in modo che poi al successivo riavvio dell’applicazione mi ritrovo la datGridView aggiornata ( quello che io intendevo come esporta/importa...
    Il punto è: salvi lo stato (inteso come valori inseriti) della griglia, o lo stato dei dati visualizzati in griglia?
    Perché se la griglia mostra dati fini a loro stessi, ti bastano due foreach innestati e un output su un file txt. Se questi dati poi hai intenzione di passarli, per citare uno dei mille esempi possibili, ad una sub form di dettaglio il discorso comincia a cambiare.
    Devi avere chiaro l'obiettivo finale dell'applicazione PRIMA di cominciare a scrivere codice. Quando sai dove vuoi andare, allora usi il codice appropriato. Ma se non conosci le potenzialità/strumenti/modi d'uso del framework, rischi di fare come me, che ho riscritto 3 volte un'applicazione perché ogni momento trovavo una maniera migliore di fare quel che volevo fare e "rattoppare" il codice non era sufficiente. Conta che attualmente ho cominciato la quarta stesura ma non mi faccio fregare... Prima finisco il mio bel libro e poi comincio
  • Re: [RISOLTO] Info.dataGridView

    Ciao, si al momento l’inserimento nella dataGridView è fine a se stessa (salvo poi però poterli filtrare in base ai valori delle colonne o poterla stampare). Diciamo che non mi interessa salvare all’interno dell’applicazione il valore delle singole celle ( per esempio su un array), ma però fare in modo che all’apertura dell’applicazione mi ritrovo le celle aggiornate come erano all’ultima chiusura dell’applicazione prelevando i dati da un file esterno.
    Ora ci riprovo e vi faccio sapere.

    Buona serata.
  • Re: [RISOLTO] Info.dataGridView

    Ciao ragazzi, per dover di cronaca ( e direi giustamente) volevo chiudere questo posto indicandovi che ho seguito i vostri consigli "collegando" la mia DataGridView ad unaDataTable .
    Modifico il titolo mettendo [RISOLTO].

    Grazie, ciao
Devi accedere o registrarti per scrivere nel forum
8 risposte