2010-02-15 23 views

risposta

11
dataGridView1.Columns[0].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss"; 

Per la formattazione specifica, controllare questi collegamenti:

+0

Questo è il modo corretto di formattare un DateTime se non è necessario alcun casi particolari per la visualizzazione qualcosa di completamente diverso. –

+0

@Justin: non sono sicuro di quello che stai dicendo. Puoi darmi maggiori informazioni? –

+2

La nostra azienda ha il caso in cui se DateTime è un determinato valore, deve essere visualizzato come una stringa vuota. Per fare ciò si usa l'evento CellFormatting su DataGridView –

1

Si può provare a modificare RowDefaultCellStyle-> formato nel design e scegli formato accettabile, o utilizzare questo:

DataGridViewCellStyle customStyle = new DataGridViewCellStyle(); 
customStyle.Format = "T"; 
customStyle.NullValue = null; 
customGridView.RowsDefaultCellStyle = customStyle; 
1

Override l'evento OnRowDataBound e leggere un po 'di più su cultures and formatting in .Net

protected override void OnRowDataBound(GridViewRowEventArgs e) 
{ 

    base.OnRowDataBound(e); 


    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 0; i < e.Row.Cells.Count; i++) 
     { 

        TableCell cell = e.Row.Cells[i]; 
        cell.Text = DateTime.Parse (cell.Text, culture); 
     } 
    } 
    } 
8

Ecco esempi di 3 modi diversi:

  • stringa di formato sul modello di cellulare
  • cellula-formattazione evento
  • tipo personalizzato convertitore

Qualche uso?

using System; 
using System.ComponentModel; 
using System.Windows.Forms; 
public class MyData 
{ 
    public DateTime A { get; set; } 
    public DateTime B { get; set; } 
    public DateTime C { get; set; } 
    [TypeConverter(typeof(CustomDateTimeConverter))] 
    public DateTime D { get; set; } 
} 
class CustomDateTimeConverter : DateTimeConverter 
{ 
    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) 
    { 
     if (destinationType == typeof(string)) 
     { 
      return ((DateTime)value).ToString("dd-MM-yyyy HH:mm:ss"); 
     } 
     return base.ConvertTo(context, culture, value, destinationType); 
    } 
} 
static class Program { 
    [STAThread] 
    static void Main() 
    { 
     DateTime when = DateTime.Now; 
     var data = new BindingList<MyData> 
     { 
      new MyData { A = when, B = when, C = when } 
     }; 
     using (var form = new Form()) 
     using (var grid = new DataGridView { 
      AutoGenerateColumns = false, 
      DataSource = data, Dock = DockStyle.Fill }) 
     { 
      form.Controls.Add(grid); 
      grid.Columns.Add(
       new DataGridViewTextBoxColumn { 
        HeaderText = "Vanilla", 
        AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, 
        DataPropertyName = "A", 
       }); 
      grid.Columns.Add(
       new DataGridViewTextBoxColumn { 
        HeaderText = "Format", 
        AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, 
        DataPropertyName = "B", 
        DefaultCellStyle = { Format = "dd/MM/yyyy HH:mm:ss" } 
       }); 
      grid.Columns.Add(
       new DataGridViewTextBoxColumn { 
        HeaderText = "CellFormatting", 
        AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, 
        DataPropertyName = "C", 
       }); 
      grid.CellFormatting += (sender, args) => 
      { 
       if (args.Value != null && args.ColumnIndex == 2 
        && args.DesiredType == typeof(string)) 
       { 
        args.Value = ((DateTime)args.Value).ToString("dd MM yyyy HH:mm:ss"); 
       } 
      }; 
      grid.Columns.Add(
       new DataGridViewTextBoxColumn { 
        HeaderText = "TypeConverter", 
        AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, 
        DataPropertyName = "D", 
       }); 
      Application.Run(form); 
     } 
    } 

} 
+1

+1 per la risposta più completa, scegli la soluzione più semplice che si adatta alle tue esigenze. –

+0

Questa risposta mi ha fatto taggare la domanda come preferita ۞ – awe

+0

grazie per questa risposta completa – fishhead

Problemi correlati