View Full Version : [C#] Formattazione Condizionale
webgandalf
28-04-2007, 08:39
Qualcuno sa come applicare la formattazione condizionale in un datagridview ?
Grazie Mille in anticipo
RaouL_BennetH
28-04-2007, 12:37
Devi utilizzare gli eventi CellParsing e CellFormatting.
Se non definisci un DefaultCellStyle di base, in quei due eventi dovrai scrivere molte righe di codice.
Ti faccio un esempio:
//supponiamo di avere una griglia nella quale per ogni cella al
//valore inserito dall'utente voglio aggiungere .00 se l'utente inserisce un numero intero
//per esempio inserisce: 5 e quando lascia la cella il risultato deve diventare: 5.00
private void miaGridView_CellParsing(object sender, DataGridViewCellParsingEvent e)
{
for(int count = minValoreColonne; count < maxValoreColonne; count++)
{
if(miaGridView.Columns[e.ColumnIndex].Index == count)
{
if(e != null)
{
if(e.Value != null)
{
try
{
e.Value = Int32.Parse(e.Value.ToString()).ToString("N2").Replace(",",".");
e.ParsingApplied = true;
}
catch(FormatException)
{
e.ParsingApplied = false;
}
//.....
}
Questo può darti spunto solo per un tipo di valore, da abbinare all'evento CellFormatting
//per esempio voglio formattare il valore come data e ora breve:
private void miaGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DateTime myDate;
try
{
for(int count = minValoreColonne; count < maxValoreColonne; count++)
{
if(e.Value != null && e.ColumnIndex == count)
{
if(DateTime.TryParse(e.Value.ToString(), out myDate))
{
e.Value = myDate.ToShortTimeString();
e.FormattingApplied = true;
}
}
}
}
catch(FormatException ex)
{
MessageBox.Show("Formato non corretto");
e.FormattingApplied = false;
}
}
webgandalf
02-05-2007, 09:50
Grazie Mille ,
Adesso provo :)
webgandalf
02-05-2007, 10:06
Ho visto ma io intendevo proprio una formattazione condizionale ( come quella di Excel per capirsi )
Ad esempio : Se il valore nella cella è minore di 1 colora di rosso , se è uguale di giallo se è maggiore di verde .
Dal report designer sono riuscito a farlo senza problemi ma nel datagridview non riesco proprio .
RaouL_BennetH
02-05-2007, 11:57
allora ti basta (sempre in quegli eventi) definire un metodo che faccia qualcosa tipo:
for(int i = min; i < max; i++)
{
if(datagridview.Rows[r].Cells[i].Value < 1)
{
datagridview.Rows[r].DefaultCellStyle.BackColor = Color.Red;
}
}
ovviamente è un esempio per un solo caso, ma puoi costruirtelo come più ti serve.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.