Visualizzazione planning settimanale

lunedì 10 febbraio 2014 - 20.19
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Windows 7  |  Windows XP  |  Visual Studio 2005  |  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server 2005  |  Oracle 11g

franco.geko Profilo | Junior Member

Ciao a tutti,
dovrei fare un programma che, a partire da dati di un database, possa dare un output come l'immagine allegata.

Lun Mar Mer Gio Ven Pippo N1 N7 N8 Pippo N2 N3 N4 N5 N6 Pluto N9 Paperino N10 N16 Gastone N11 N12 N13 Gastone N12 N15 Gastone N13 N17 N14 N18

Praticamente devo mostrare la settimana con relative commesse da lavorare per ciascun Operatore.
La tabella da cui estrarre i dati posso farla come ritengo più opportuno.

Mi servirebbe un'idea su come poter visualizzare quel genere di risultato.
Che oggetto usare? Come caricarlo?

EDIT:
Ho provato a inserire l'immagine e il file zip con l'immagine ma non funziona in nessun caso.


Grazie dell'attenzione
Franco
Assaggiata l'acqua, conosciuta la sorgente

AntCiar Profilo | Expert

Ciao.

Per fare quello che serve a te in commercio esistono componenti specifici chiamati "Gantt" ma quelli buoni costicchiano un po.
Penso che non è tua intenzione comperarli. Se alla fine devi far visualizzare solo una settimana alla volta allora protresti adattare una listview al caso tuo.

In pratica aggiungi la tua listview alla form e all'interno da progettazione ti crei 8 colonne che rappresentano i tuoi giorni della settimana più la prima colonna che avrà come Text il valore tipo 'Operatore'.
Poi dinamicamente vai a creare le tue righe che rappresentano i tuoi operatori e in corrispondenza della colonna vai a valorizzare la commessa del relativo giorno.

ad esempio per creare una riga di operatore si fa così:

ListViewItem op = new ListViewItem();
op.Text = "nome operatore";
op.SubItems.Add("N1"); //riempimento della colonna relativa al Lunedi con il valore N1
op.SubItems.Add(""); //riempimento della colonna relativa al Martedi con il valore vuoto perchè ad esempio non ha commesse da fare
op.SubItems.Add(""); //riempimento della colonna relativa al Mercoledi con il valore vuoto perchè ad esempio non ha commesse da fare
op.SubItems.Add("N4; N5; N25"); //riempimento della colonna relativa al Giovedi con i valori di commessa

//in questo modo continui a riempire tutte le colonne

alla fine per aggiungere la riga alla ListView fai:

this.listView1.Items.Add(op);



Cristian Barca

franco.geko Profilo | Junior Member

Grazie mille, Cristian.
Credo che farò come hai suggerito, anche se non so ancora come fare un'unica query per estrarre i dati in quel modo avendo una tabella del tipo
Operatore DataCommessa Commessa

Per intanto grazie! :)

Ciao
Franco
Assaggiata l'acqua, conosciuta la sorgente

AntCiar Profilo | Expert

Ciao.

Per estrarre i dati io farei in questo modo:

Carico i dati della tua tabella magari filtrando per un determinato intervallo di data in modo da non avere N giorni da mettere come colonne.
Poi successivamente una volta caricati i dati, farei una piccola funzioncina che mi estrae il minimo e il massimo delle date presenti nei dati caricati.
A questo punto con un ciclo while che va dalla data minima alla dataMassima, aggiungerei N colonne alla listView quanti sono i giorni che ci sono tra le due date.
In questa stessa fase aggiungerei in un dizionario (chiave di tipo DateTime e valore di tipo ColumnHeader) la coppia data - colonna.

Poi mi scorrerei i dati caricati e tramite il dizionario, vado a valorizzare la colonna relativa al giorno.
Cristian Barca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5