将表从数据库传输到数据网格(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
类型的列。
感谢您的帮助。
最适合你。
答案 0 :(得分:4)
NET中只有DateTime类型,所以你不能真正拥有只有Date部分的变量。不应解决此类问题,更改日期时间值的存储或插入复杂的SQL函数以将值提取为字符串或删除时间部分。
这只是关于如何格式化数据以进行演示的问题。
我想你在XAML中需要这样的东西
<DataGridTextColumn Header="Dia" Binding="{Binding dia_media,
StringFormat=dd MM yyyy}"/>
答案 1 :(得分:-1)
您可以在绑定中使用转换器
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();
}
}
结果:
我希望它有所帮助