我使用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(...);
}
}
}
答案 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);
}
}
}