2009-06-24 26 views
0

我有一個數據綁定DataGridView。數據源是帶有包含兩個DateTime列(BeginTimeStampEndTimeStamp)的表的打字數據集。我使用類型化的數據集的Update命令將數據讀取並寫入到SQL Server 2005數據庫。C#:如何調整用戶在DataGridView中輸入的值?

用戶必須輸入日期到每個兩列,我強制使用CellValidatingRowValidating事件。不過,我也需要確保以下兩個規則:

  1. BeginDate列的時間值必須00:00:00
  2. EndDate列的時間值必須始終爲23 :59:59(或11:59:59 pm,如果你喜歡)

因爲我不想讓用戶一直輸入23:59:59,所以我想以某種方式改變用戶的根據1.和2.在我的代碼中輸入。

我在哪裏以及如何做到這一點?

編輯

對不起的情況下,我不清楚。用戶可以輸入任何日期部分,但是,對於EndTimeStamp,時間部分在BeginTimeStamp和23:59:59的午夜被固定。

實施例:

用戶輸入2009/01/01下午1時○○分00秒作爲BeginTimeStamp。我的申請應該將此更改爲2009/01/01 00:00:00。

用戶輸入2009/01/31 01:00:00 pm爲EndTimeStamp。我的應用程序應該將此更改爲2009/01/31 23:59:59。

回答

2

我只是顯示日期時間的日期和添加的時間在幕後。

這可能是用戶輸入數據時,或者當您將數據寫入數據庫時​​。

如果您選擇前者,請查看DataGridView.CellEndEdit事件。

請參閱Noam的代碼來適當設置時間的答案。

0

我不確定我是否遵循,用戶必須輸入兩個日期的值,但它們總是相同的?如果我理解正確的話,爲什麼不能在數據庫中設置的默認值,那麼當你讀入數據集中的值已經在那裏

+0

我覺得OP指的DateTime的時間部分必須是相同的,但該日期可以是任何東西。 – ChrisF 2009-06-24 12:40:32

1

您可以將下列行添加到您的CellValidating方法,你的其他驗證後

DateTime newValue = oldValue.Date; 

DateTime newValue = oldValue.Date.AddDays(1).AddSeconds(-1); 
0

您也可以驗證您的屬性設置裏面:

public DateTime BeginTimeStamp 
{ 
    get { return _dateTime; } 
    set 
    { 
     // force the time to whatever you want 
     _dateTime = value.Date; 
    } 
} 
相關問題