如何更改DateTime显示格式以使用我的功能?

时间:2011-08-15 06:55:00

标签: c# winforms linq-to-sql datetime datagridview

我使用Microsoft SQL服务器来保存和检索DateTime。但在我们的文化中,用户使用波斯日期时间。所以我写了一个扩展方法ToPersianDateString(this DateTime dt)来向用户显示格里高利日期的正确波斯日期。

DataGridView想要显示数据或用户编辑波斯日期值后出现问题。有没有办法指定DataGridView为日期时间列调用我的函数,在用户编辑日期时间列后,将其转换为格里高利日期时间?

我还有一个用于转换为格里高利日期的静态函数:

static DateTime ToGregorianDate(string persianDate);

我使用Linq to SQL作为ORM,我的示例表单是这样的:

public class PeopleForm : Form
{
    DataContext context = new DataContext();

    public PeopleForm()
    {
        InitializeComponents();
        datagridview1.DataSource = context.People;
    }

    private void btnSave_Click(...)
    {
        try{
            context.SubmitChanges();
        }
        catch
        {
            MessageBox.Show(...);
        }
    }

}

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用DataGridView.CellFormatting活动?

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // Check if it's Persian Date Column
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "PersianDate") //PersianDate == Your Date Column Name
    {
        if (e.Value != null)
        {
             e.Value = ToGregorianDate(e.Value);

        }
    }
}