2011-11-02 104 views
1

我有一個特殊的問題,第一個看起來很容易,但我不知道任何解決方案。 目前我編寫了一個C#-WPF-應用程序,可以節省預訂。 預訂還有一個日期,我從日曆中獲取。 我將預訂保存到我的Sql-Express數據庫,日期的值是「DD.MM.YYYY」,數據類型是日期。現在格式日期格式WPF datagrid

,我將數據加載到一個DataGrid在我的應用程序:

public DataSet SaveDataToDataSet(DataSet dataset) 
    { 

     string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Harald\\Desktop\\Farmer´s Calc\\Programmierung\\WPF\\Finanz_WPF\\Finanz_WPF\\FarmersCalc.mdf;Integrated Security=True;User Instance=True"; 
     string query = "select bezeichnung 'Bezeichnung', einausgaben 'Einnahmen-Ausgaben', kostenstelle 'Kostenstelle', datum 'Buchungsdatum', betrag 'Betrag', details 'Details' from Buchung"; 
     using (SqlConnection connection = 
      new SqlConnection(connectionString)) 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      adapter.SelectCommand = new SqlCommand(
       query, connection); 

      adapter.Fill(dataset); 
      return dataset; 

     } 
    } 

奇怪的是,在DataGrid的日期列的格式爲 「DD.MM.YYYY HH:MM:SS」,但我只想要「DD.MM.YYYY」! 我需要說的是,我沒有定義列,我使用AutoGenerateColumns = true進行設置。 有沒有人知道這個解決方案?

+0

對我來說這不是幫助,因爲我AutoGenerate列! – Harald

+0

可能的重複:http://stackoverflow.com/questions/848702/need-to-format-dates-in-dynamically-built-wpf-datagrid –

+0

你可以做到這一點,而不會放棄自動生成的列,其中的幾個解決方案那個答案就是這樣。用適合您的特定解決方案之一更新我的迴應。 – Jay

回答

2

「date」Sql類型最終成爲數據集中的DateTime,這也是您獲得時間的原因。您需要定義列並在數據網格上指定格式。

編輯:我被誤會無法格式化自動生成列時。正如在這裏提到的其他答案,這個問題:Need to format dates in dynamically built WPF DataGrid解決了一些方法來實現這一點。

+0

但是,即使使用自動生成的...使用grid.Resources ...或AutoGeneratingColumnEvent的代碼,您也可以格式化字符串。 – Jay

+0

對不起,但這個答案不正確。它可以使用自動生成的列完成,請參閱其他答案以瞭解正確的方法。 –

+0

確實。請接受其他答案。我不知道這種能力。 –

4

檢查了這一點:

Need to format dates in dynamically built WPF DataGrid

它涉及到使用字符串中的網格資源格式。

那裏有答案,不涉及定義列......包括在自動生成列的事件中處理它。

private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
    if (e.PropertyType == typeof(DateTime)) 
    { 
     DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn; 
     if (dataGridTextColumn != null) 
     { 
      dataGridTextColumn.Binding.StringFormat = "{0:d}"; 
     } 
    } 
}