PDA

View Full Version : سوال: چطور تاریخ میلادی رو بصورت شمسی در datagridview نمایش بدم؟



dontspeak
چهارشنبه 28 اسفند 1398, 23:39 عصر
سلام دوستان من تاریخ رو بصورت میلادی در دیتابیس ذخیره کردم حالا می خوام بصورت شمسی توی datagridview نمایش بدم چطور باید اینکارو انجام بدم؟
نکته: من datagridview رو بصورت ویزاردی با tableadapter پر کردم

ShayanFiroozi
پنج شنبه 29 اسفند 1398, 01:10 صبح
سلام ، فکر کنم معقولانه ترین راه اینه که یه کانورتر کوچیک بنویسین تمام تاریخ های میلادیتون رو به شمسی تبدیل کنه ، چون به هر حال بعدا دوباره با همین تاریخ سر و کار خواهید داشت.

the king
پنج شنبه 29 اسفند 1398, 08:50 صبح
سلام دوستان من تاریخ رو بصورت میلادی در دیتابیس ذخیره کردم حالا می خوام بصورت شمسی توی datagridview نمایش بدم چطور باید اینکارو انجام بدم؟
نکته: من datagridview رو بصورت ویزاردی با tableadapter پر کردم
اگه منبع داده تون ستون های DateTime داره برای رخداد CellFormatting کد بنویسید :

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if ((e.Value is DateTime) == false)
{
return;
}
var persian = new System.Globalization.PersianCalendar();
var date = (DateTime)e.Value;
e.Value = string.Format("{0}/{1:00}/{2:00}", persian.GetYear(date), persian.GetMonth(date), persian.GetDayOfMonth(date));
e.FormattingApplied = true;
}

the king
پنج شنبه 29 اسفند 1398, 08:55 صبح
و اگر منبع داده تون ستون های string مثل ("2017/07/15") داره :

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if ((e.Value is string) == false)
{
return;
}
var persian = new System.Globalization.PersianCalendar();
DateTime date;
if (DateTime.TryParse((string)e.Value, out date))
{
e.Value = string.Format("{0}/{1:00}/{2:00}", persian.GetYear(date), persian.GetMonth(date), persian.GetDayOfMonth(date));
e.FormattingApplied = true;
}
}