我遇到了一个特殊的问题,首先看起来很容易,但我不知道任何解决方案。 目前我编写了一个C#-WPF-Application,可以保存预订。 预订还有一个日期,我从日历中取出。 我将预订保存到我的Sql-Express数据库,日期值为“DD.MM.YYYY”,数据类型为日期。
现在,我将数据加载到我的应用程序中的数据网格中:
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”! 我需要说的是,我没有定义Columns,我使用AutoGenerateColumns = true。 有人知道解决方案吗?
答案 0 :(得分:4)
检查出来:
Need to format dates in dynamically built WPF DataGrid
它涉及在Grid资源中使用字符串格式。
其中有答案不涉及定义列...包括在自动生成列的情况下处理它。
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}";
}
}
}
答案 1 :(得分:2)
“日期”Sql类型最终成为数据集中的DateTime,这也是您获得时间的原因。您需要在数据网格上定义列并指定格式。
编辑:我错误的是在自动生成列时无法格式化。正如这里提到的另一个答案,这个问题:Need to format dates in dynamically built WPF DataGrid解决了实现这一目标的一些方法。