2012-06-24 43 views
0

我正在使用C++ .net。我有一個自定義控件,顯示一個數據庫的內容與之間的綁定源。我使用標籤在控制的文本屬性數據集中的數據通過一個BindingSource的用下面的代碼綁定:數據綁定日期時間到標籤 - >文本將值轉換爲本地時間

mycontrol->Controls[i]->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text", 
this->bindingSourceRelRev_Data, mycolumn,true, System::Windows::Forms::DataSourceUpdateMode::OnValidation, 
nullptr, L"t"))); 

請注意,該代碼是一個循環上的所有控件迭代的摘錄,因此控件[i](將作爲標籤控件)和變量mycolumn(將成爲要綁定到的數據集的列)。除了不想要的行爲,我還沒有找到改變的方式,它工作得很好。 軟件運行在世界的不同地區,但記錄必須在當地時間。數據庫將本地時間中的時間存儲爲日期時間值,但dataBinding將其解釋爲UTC,並顯示標籤中的時間並應用時區差異。例如,如果數據是2012年6月24日16:40,它將在4小時不同時區顯示2012年6月24日22:40。 我需要它只顯示存儲的值,而不進行更改。

我可以想到不同的方式去周圍,但非優雅: - 捕獲標籤的文本更新事件,並取消更改... - 將日期存儲爲DB中的字符串... -fill手動標籤... -...

如果我不綁定格式化,它不會改變的價值,但後來我的標籤上有原始日期時間字符串...

請,我在綁定中丟失的任何魔法,以便它不會假定它必須更改時區?

非常感謝您提前! Adan

回答

0

好吧,似乎問題實際上並不在綁定,而是在數據集本身。列的屬性DateTimeMode被設置爲undefinedlocal,這是序列化數據輸入並將其轉換爲查看數據的機器的本地時間。只是將屬性更改爲未定義,現在按我的意願工作,只是從未修改的數據中獲取日期。

我對DateTime格式提供程序的文檔感到困惑,它指出它將序列化日期。也許我誤解了它......實際上並沒有。

反正非常感謝!

相關問題