2011-08-15 44 views
1

我使用Microsoft SQL Server來保存和檢索DateTime。但在我們的文化中,用戶使用波斯日期時間。所以我寫了一個擴展方法ToPersianDateString(this DateTime dt)來顯示用戶正確的波斯日期格利高利日期instrate。如何更改DateTime顯示格式以使用我的功能?

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

你試過使用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); 

     } 
    } 
} 
+0

謝謝!但它只是一半的方式,在格式化日期時間之後將數據重新轉換爲數據的時間和地點? – Jalal

+1

您可以使用CellEndEdit事件並將更改的值轉換爲所需的日期格式:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellendedit.aspx – Waqas

相關問題