2014-12-29 43 views
1

enter image description here使用另一列填充數據網格列

我要在C#窗體中創建表格。此表格必須列出日期:格里曆日期和波斯日期。 公曆日期列由來自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它會返回正確的波斯日期。但它無法填充Data grid Persian Date列。

+0

是字符串類型的Persion Date列嗎? –

+0

它的列類型完全是「DataGridViewTextBoxColumn」。 – Behnam

+0

您是否在您的Form_Load事件處理程序中放置了斷點以確保(1)它被調用,(2)Grd.RowCount不爲零? –

回答

1

Grd.Rows[i].Cells[0].Valueint而不是Date

您的意思是Grd.Rows[i].Cells[2].Value

+0

數據網格視圖的RightToLeft屬性爲True。所以Cells [0]是正確的。 – Behnam

+0

你真的需要在你的問題中提到這樣的事情。 –

+0

另外,如果你的miladitoshamsi函數返回一個字符串,爲什麼你再次將它轉換爲一個字符串,然後再將該值轉換爲字符串呢? –

0

將PersianDate列的公式表達式屬性設置爲「[GregorianDate]」。 這將自動填充所有值。

+0

你能解釋一下嗎?我無法找到此屬性 – Behnam

+0

DataTable.Columns [「PersianDate」]。Expression =「[GregorianDate]」; – XYZ