我要用C#windows窗体创建一个表。此表必须列为日期列:格里高利日期和波斯日期。 公历日期列由SQL数据库中的存储过程填充。 我有以下功能,将公历日期转换为波斯日期:
public string miladitoshamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("00"));
sb.Append("-");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("-");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}
我在formload事件中尝试使用此代码来填充波斯日期列。但它还是空的。
for (int i = 0; i < Grd.RowCount-1 ; i++)
{
DateTime bdate = Convert.ToDateTime(Grd.Rows[i].Cells["GregorianDate"].Value);
string s = miladitoshamsi(bdate).ToString();
Grd.Rows[i].Cells[0].Value = s.ToString();
//MessageBox.Show(s);
}
当我使用messagebox时,它将返回正确的波斯日期。但它无法填充数据网格波斯日期列。
答案 0 :(得分:1)
Grd.Rows[i].Cells[0].Value
是int
,而不是Date
。
您的意思是Grd.Rows[i].Cells[2].Value
。
答案 1 :(得分:0)
将PersianDate列的公式表达式属性设置为&#34; [GregorianDate]&#34;。 这将自动填充所有值。