2013-08-17 73 views
0

我可是從數據庫2日期字段獲得字符串格式,如:C#日期字段數據綁定值到字符串

「YYYY.MM.DD」

然後,在我的形式,我想數據綁定添加到2個DatePickers,將顯示這些日期如下圖所示:

dtStart.DataBindings.Add(new Binding("Value", _ds.Tables["invoice"], "startdate")); 
dtEnd.DataBindings.Add(new Binding("Value", _ds.Tables["invoice"], "enddate")); 

現在的問題是,當我改變來自DatePicker的日期則該值將是一個日期和我需要的是更新的價值,但在相同的字符串格式「yyy y.mm.dd」。

任何線索我該如何強制這樣做?

非常感謝

+0

'DateTime'沒有任何所謂的'格式string'。如果你想顯示一個'DateTime',你必須將它轉換爲某種格式的字符串(例如'yyyy.mm.dd') –

+0

Datepickers中顯示的日期正確,我需要的是相反的,當我更改日期選擇器顯然數據表格單元格值將更新爲DateTime而不是格式化的字符串。 – VAAA

+0

DateTimePicker的'Value'是'DateTime',那麼爲什麼'formatted string'可以更新回你的'DataTable'?您應該檢查'DataGridViewColumn.DefaultCellStyle.Format' –

回答

1

如果您的DataGridViewColumn startdatestring類型。您可以更新回數據源之前,一個BindingParse事件處理程序添加代碼格式化值:

Binding bind = new Binding("Value", _ds.Tables["invoice"], "startdate"); 
bind.Parse += (s,e) => { 
    e.Value = ((DateTime)e.Value).ToString("yyyy.mm.dd"); 
}; 
dtStart.DataBindings.Add(bind); 
//Do the same for dtEnd 

不過,我建議設置你的DataGridViewColumn data typeDateTime。然後,你將不再需要任何自定義Parsing和剛剛成立的格式進行像這樣的列的單元格:

dataGridView1.Columns["startdate"].DefaultCellStyle.Format = "yyyy.mm.dd"; 
+0

讓我試試看吧!像這樣的聲音是解決方案:)謝謝 – VAAA

+0

是的,它工作的很好!我很久以前就試圖找到解決方案。欣賞它 – VAAA