日期格式化WPF数据网格

时间:2011-11-02 13:49:22

标签: c# wpf date datagrid

我遇到了一个特殊的问题,首先看起来很容易,但我不知道任何解决方案。 目前我编写了一个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。 有人知道解决方案吗?

2 个答案:

答案 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解决了实现这一目标的一些方法。