Tôi muốn thay đổi cách đối tượng DateTime được hiển thị trong một DataGridView. Cụ thể, tôi muốn hiển thị giây với thời gian.làm cách nào để thay đổi cách đối tượng DateTime được hiển thị trong một DataGridView
C# .net 2.0
Tôi muốn thay đổi cách đối tượng DateTime được hiển thị trong một DataGridView. Cụ thể, tôi muốn hiển thị giây với thời gian.làm cách nào để thay đổi cách đối tượng DateTime được hiển thị trong một DataGridView
C# .net 2.0
dataGridView1.Columns[0].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss";
Để định dạng cụ thể, hãy xem các liên kết sau:
Một cách là để xử lý các CellFormattingEvent event và sau đó bạn có thể hiển thị các dữ liệu làm thế nào bạn muốn.
cảm ơn liên kết – fishhead
Bạn có thể thử để chỉnh sửa RowDefaultCellStyle-> định dạng trong thiết kế và chọn định dạng chấp nhận được, hoặc sử dụng này:
DataGridViewCellStyle customStyle = new DataGridViewCellStyle();
customStyle.Format = "T";
customStyle.NullValue = null;
customGridView.RowsDefaultCellStyle = customStyle;
Override sự kiện OnRowDataBound và đọc thêm một chút về 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);
}
}
}
Dưới đây là ví dụ về 3 cách khác nhau:
Bất kỳ việc sử dụng nào?
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);
}
}
}
Đây là cách chính xác để định dạng ngày giờ nếu bạn không cần bất kỳ trường hợp đặc biệt nào để hiển thị nội dung khác hoàn toàn. –
@Justin: Tôi không chắc bạn đang nói gì. Bạn có thể cho tôi biết thêm thông tin không? –
Công ty chúng tôi có trường hợp nếu DateTime là một giá trị nhất định, nó cần hiển thị dưới dạng một chuỗi rỗng. Để thực hiện điều đó, bạn sẽ sử dụng sự kiện CellFormatting trên DataGridView –