2010-10-27 187 views
27

我正在使用DataGridView和對象數據綁定來顯示有關係統中日誌實體的信息,這些信息是通過SOAP從遠程服務中檢索的。 其中一列稱爲「Last action」,表示實體最後一次記錄消息。這是一個System.DateTime值。當我讀到SOAP響應(下面的例子)時,他的時間戳顯然包含了所有的信息,直到第二部分。如何在DataGridView中格式化DateTime列?

<LoggingEntity> 
<host>marty86ce</host> 
<process>10148</process> 
<logger>http_core</logger> 
<appName>httpd</appName> 
<ffda>true</ffda> 
<lastAction>2010-10-27T12:00:19.5117509Z</lastAction> 
<lastHeartbeat>0001-01-01T00:00:00</lastHeartbeat> 
<channelId>em_9BA2A2B4D0B6E66</channelId> 
<ffdaChannelId>em_E7C8D1D4DE8EEB9</ffdaChannelId> 
</LoggingEntity> 

當我在表格中顯示的話,我反而可以讀取高達分鐘 http://i.stack.imgur.com/dLYBz.png 我用下面的代碼做數據綁定當我按下刷新按鈕

public void RefreshEntities() 
{ 
    IEntityManagement management = EntityPlugin.GetProxy(); 
    LoggingEntity[] result = management.FindLoggingEntities(new TemplateQuery { ffdaSpecified = true, ffda = true }); //Remote invocation 

    Invoke(new MethodInvoker(delegate { gridEntities.DataSource = result; })); //THIS does the data binding from the array 

    Invoke(new MethodInvoker(delegate { btnRefresh.Enabled = true; })); 
} 

我想知道如何控制數據綁定值的列格式。我認爲格式dd/MM/yyyy hh:mm來自我的系統設置。 如何以編程方式覆蓋格式設置?

預先感謝您對Subversion(FFDAGui程序)

完整的解決方案代號爲Logbus-ng的開源項目。

+0

如何在WPF中做到這一點? – 2017-02-17 06:19:23

回答

14

如果它是一個Windows窗體DataGrid,您可以使用下面的代碼格式化日期時間爲列

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss"; 

編輯:

除此之外,如果你需要達上午/上午格式,你可以使用下面的代碼

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt"; 
+0

第一個例子中的「HH:MM:ss」不起作用,因爲MM是月份而不是分鐘。 – 2016-09-01 05:41:08

+0

更正。這是一個錯字。謝謝@ManuelHoffmann – 2016-09-05 09:36:55

27

你可以設置你想要的格式:

dataGridViewCellStyle.Format = "dd/MM/yyyy"; 
this.date.DefaultCellStyle = dataGridViewCellStyle; 
// date being a System.Windows.Forms.DataGridViewTextBoxColumn 
+4

'dd/MM/yyyy'將日期格式設置爲'dd-MM-yyyy'。使用'dd'/'MM'/'yyyy'將日期格式化爲'dd/MM/yyyy' – TFischer 2014-05-16 17:52:53

+2

'yourColumn.DefaultCellStyle = new DataGridViewCellStyle {Format =「dd'/'MM'/'yyyy hh:mm:ss 「};' – Appulus 2015-05-05 22:33:53

+0

不幸的是,它並沒有改變我的任何事情。我的約會保持原樣。看起來像我列中的日期被視爲一個字符串,它使它不可形成。除了這一點,對日期有特殊要求,它們是真實的日期值? – C4u 2016-02-05 11:18:43

0

您可以在ASPX格式,只需在您的BoundField添加屬性「DateFormatString」。

DataFormatString="{0:dd/MM/yyyy hh:mm:ss}" 
+0

'System.Windows.Forms.DataGridViewCell'中沒有這樣的DateFormatString屬性 – 2016-12-29 13:17:54

0

我用這些代碼,希望它可以幫助

dataGridView2.Rows[n].Cells[3].Value = item[2].ToString(); 
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d"); 
+0

您可以添加一些解釋嗎? – 2016-06-05 13:06:17

+0

這是如果您手動填充行,並且您希望將DateTime轉換爲字符串。 ToString(「d」)從DateTime ToString方法指定僅日期格式。 – galamdring 2017-06-02 13:59:30