2013-02-25 76 views
0

我想從DataGridView把所有類型的驗證關閉,但設置DataGridview.CausesValidation=false不起作用,它總是拋出異常的DataGridView的CausesValidation不起作用

DataGridView綁定到數據表具有列「輸入無法識別的數據」的DateTime數據類型,但我想添加一些自定義的日期格式,這些文件對某些文化來說是無效的11.12.2013,10-12-2013,11/11/2013。

,因爲我需要這些列排序,因此,我想,讓他們代替日期時間字符串/ VARCHAR

它是一個C#WinForm應用程序。

回答

0

默認情況下沒有被驗證發生。它不是DataGridView用於驗證數據,但基本類型,你的情況DateTime

如果你真的想保持類型的日期時間列DateTime你應該所有輸入數據轉換成由您選擇一個單一的格式。您仍然可以通過在運行時轉換爲特定文化來展示(在內部它們將保持默認文化)它們(儘管如果此數據不是隻讀,則需要額外的代碼和注意)

這裏是代碼片段,意思是 - 你將數據存儲在文化DateTime(由Thread或自己定義的)並顯示爲字符串轉換爲特定的文化B.

當用戶試圖將正確分析和保存文化的任何格式輸入日期B(不過用戶會在特定的文化A中看到它)。

這裏的問題 - 如果客戶端在任何其他文化比B進入日期保存後它會在視覺上轉換爲B.

這是列表的屬性,它填充DataGridView

 private DateTime _dt1; 
     public string dt1 { 
      get 
      { 
       return _dt1.ToString(new CultureInfo("nl-NL")); 
      } 
      set 
      { 
       _dt1 = DateTime.Parse(value); 
      } 
     } 

關於排序問題 - 這是比較容易實現自定義排序會比較不顯示strings但是他們的支持DateTime性能

+0

不同的列可以有不同的日期格式基於m eans我無法將它們全部轉換爲常用格式,但每列的格式對於所有行都是相同的。只要我需要堅持顯示格式爲用戶輸入。 – Munawar 2013-02-25 20:10:09

+0

'我需要堅持的顯示格式通過與文化填充預定義的時間列於entered'哪些用戶?如果是這樣,您需要隱藏除1以外的所有列以供客戶端填寫。如果是這種情況,請檢查我編輯的答案 – Nogard 2013-02-26 09:40:04