簡體   English   中英

默認情況下,C#將T-SQL date數據類型轉換為DateTime數據類型

[英]C# converts T-SQL date datatype to DateTime datatype by default

將表從數據庫傳輸到數據網格(WPF)時,T-SQL中的DATE數據類型將轉換為DateTime,但我不希望這樣。 我只想在我的數據網格中顯示.Date部分。

這是c#中的一段代碼:

cmd = new SqlCommand("SELECT * FROM bibliotvguia.get_progtv();", con);

adap = new SqlDataAdapter(cmd);

dt = new DataTable();
adap.Fill(dt);
programs_datagrid.ItemsSource = dt.DefaultView;

和XAML代碼片段:

<DataGrid SelectionMode="Single" Name="programs_datagrid" Height="340"
                      AutoGenerateColumns="False" RowHeaderWidth="0" IsReadOnly="True" CanUserResizeColumns="True"
                      CanUserReorderColumns="False">
                    <DataGrid.Columns >
                        <DataGridTextColumn Header="Canal de TV" Binding="{Binding canal_media}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Dia" Binding="{Binding dia_media}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Hora" Binding="{Binding hora_media}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Produção Audiovisual" Binding="{Binding titulo}"></DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>

dia_media列是具有DateTime類型的列。

謝謝你的幫助。

最適合你的。

在.NET中只有DateTime類型,所以你不能真正擁有只有Date部分的變量。 不應解決此類問題,更改日期時間值的存儲或插入復雜的SQL函數以將值提取為字符串或刪除時間部分。

這只是一個關於如何格式化數據進行演示的問題。

我想你在XAML中需要這樣的東西

  <DataGridTextColumn Header="Dia" Binding="{Binding dia_media, 
                                 StringFormat=dd MM yyyy}"/>

您可以在綁定中使用轉換器

XAML

       <Window.Resources>
         <locl:DateTimeConverter x:Key="converter"/>
       </Window.Resources>
     ...
        <DataGrid ItemsSource="{Binding Dates}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Date" 
                                    Binding="{ Binding DateProperty,
                                               Converter={ StaticResource converter}}"/>
            </DataGrid.Columns>
        </DataGrid>

轉換器類:

 public class DateTimeConverter:IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            DateTime dateValue = (DateTime)value;

            return dateValue.ToString("yyyy/MM/dd/");
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

結果:

在此輸入圖像描述

我希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM