Archivio per ottobre 2011

Inserire in una colonna di datagridview una immagine

Nota: Articoli etichettati come Snippet non contengono codice completo ma solo parti di esso, recuperate da appunti. Per cui, potrebbe essere necessario modificarne alcuni nomi o indici. Per ogni chiarimento, lasciate un commento all’articolo.

Questo stralcio di codice consente di inserire, in una datagridview (C# – Windows Forms), una colonna contenente immagini.

Nell’esempio sono stati utilizzati dei pallini colorati, per indicare lo stato dei singoli record visualizzati.

Viene inoltre fornito il codice per modificare, a runtime, l’immagine della specifica riga nella colonna di immagini.

DataGridViewImageColumn colonna = new DataGridViewImageColumn();
colonna.ImageLayout = DataGridViewImageCellLayout.Normal;
colonna.Image = new System.Drawing.Bitmap(Properties.Resources.pallino_rosso);
dgvConvocazioni.Columns.Insert(1, colonna);
dgvConvocazioni.Columns[1].HeaderText = “”;
dgvConvocazioni.Columns[1].Width = 20;

Modifica a RunTime

dgvConvocazioni.Rows[1].Cells[5].Value = New System.Drawing.Bitmap(Properties.Resources.pallino_verde)

Se il DataSource della dgv è una lista (Ilist) di oggetti, è sufficiente inserire tra le proprietà della classe una Bitmap.
Segue il codice di definizione della classe, la cui lista rappresenta il DataSource.

    public class DatagridListElementConvocazioni
{
public int id { get; set; }
[DisplayName(” “)]       // Richiede: using System.ComponentModel;
public System.Drawing.Bitmap stato { get; set; }
[DisplayName(“Data Invio”)]
public string dataInvio { get; set; }

public DatagridListElementConvocazioni(……)
{
….
this.stato = new System.Drawing.Bitmap(Properties.Resources.pallino_bianco);

}
}

Annunci

,

Lascia un commento

Stampa di un Report (rdlc) in Visual Studio senza anteprima e con numero di copie selezionabile

Questa sera, sviluppando un software gestionale in C# (Visual Studio 2008 – .Net Framework 3.5) mi sono trovato davanti ad un problema. Ho la necessità di mandare in stampa un Report (estensione rdlc) realizzato con il Report Designer di Visual Studio, senza passare per l’anteprima e con un numero di copie variabile.

Cercando (“c# print report without preview“) sui numerosi forum che trattano di programmazione, ho trovato molti post che fanno riferimento ad un articolo Microsoft, presente in http://msdn.microsoft.com/en-us/library/ms252091.aspx

Mi sono letto l’articolo, ho cercato di capirne il funzionamento ed ho deciso di scrivere una classe che mi permettesse di stampare senza troppa fatica un Report esistente. L’unico metodo pubblico della classe permette anche di selezionare il numero di stampe da effettuare.

Le modifiche al codice, rispetto a quello dell’articolo, sono minime e riguardano appunto quest’ultima funzione e la capacità della classe di ricavare le dimensioni ed i margini del Report direttamente dall’oggetto passato.

PrintReport.cs

Nella classe chiamante, impostare il Report locale personalizzando il seguente codice:

            LocalReport lr = new LocalReport();
lr.ReportPath = reportPath;
lr.EnableExternalImages = true;
lr.DataSources.Add(source);
lr.SetParameters(parameters);
lr.Refresh();

con “source” una sorgente dati valida e “parameters” un array di parametri.

Appena avrò un attimo di tempo, scriverò un articolo completo sulla preparazione e stampa dei Report in Visual Studio, almeno per quanto appreso nella mia esperienza! 😉

AGGIORNAMENTO della Classe – versione 1.0.1 – 12 ottobre 2011

Dalle statistiche ho notato che il file allegato a questo articolo è stato scaricato numerose volte. Vi chiedo cortesemente, in caso utilizziate il file, di lasciare un commento sulla classe. Impressioni, bug, proposte di miglioramenti (anche effettuati). Grazie!!!

, ,

2 commenti