2011-04-23 22 views
0

我DataTable中創建列,如:數據表日期列

headerTable.Columns.Add(VendInvoice.Date, typeof(???)); 

我不知道我怎樣才能增加只是一個日期列,我知道如何添加DATETIME列。

+0

爲什麼你需要?你不可以不用設定時間就使用'DateTime'嗎? – 2011-04-23 03:05:23

+0

我不想給我的那個領域增加時間。 – Gainster 2011-04-23 03:08:41

+0

DateTime.Today給你的日期與時間00:00:00 – 2011-04-23 03:15:33

回答

1

BCL中沒有實現沒有時間的日期的類型。

即使有,DataColumn類也不會支持它。 Here is the list of types you're allowed to use.對於按時間順序排列的數據,您有DateTimeTimeSpan - 就是這樣。

你能做什麼,如果你想這個DataTable傳遞給呼叫者誰可能不知道所需的唯一日期語義的,是附加一個事件處理程序DataTable本身可復位一天的時間:

private void DataTable_RowChanged(object sender, DataRowChangedEventArgs e) 
{ 
    if ((e.Action & DataRowAction.Add) != 0) || 
     (e.Action & DataRowAction.Change) != 0)) 
    { 
     DateTime dt = (DateTime)e.Row[DateColumn]; 
     if (dt != dt.Date) 
      e.Row[DateColumn] = dt.Date; 
    } 
} 

// Later ... 
dataTable.RowChanged += DataTable_RowChanged; 

請注意,條件邏輯對於防止事件處理程序中的無限遞歸是必需的。

我真的不認爲我會這樣做,說實話。相反,我只是使用DateTime.Date方法,當訪問列中的值,而不是擔心寫入時會發生什麼。但是,如果由於某種原因,您的域規則不允許您採用該方法,則可以使用上面的處理程序。