如果我的SQL表中的条目是09:00:00,我的单元格显示为09:00:00之类的东西,或者我是否抛出这样的字符串格式:
<DataGridTextColumn Binding="{Binding Path=tin, StringFormat=\{0:hh\\:mm\}}" Header="Time In:"/>
我得到9点。如何将其格式化为“09:00 AM”之类的短时间字符串?
我尝试过使用StringFormat = t并将单元格留空。任何使用“t”和单元格都是空白的。我真的在这里泡菜。
DataGrid中填充了名为displayGrid的数据集。 entryGrid是DataGrid对象 entryGrid.ItemsSource = displayGrid.Tables [0] .DefaultView;
我在这里寻找的是在XAML中投入什么来正确格式化。我需要从我的SQL 2008表中的09:00:00到我的数据网格中的09:00 AM。我在VS 2012中使用C#.Net和XAML。我是编码的新手,所以我确信这是一个简单的错误或语法错误。感谢您提供任何帮助。
编辑:
我甚至回去了,尝试使用以下代码自动生成列以格式化单元格:
private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(DateTime))
{
DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn;
if (dataGridTextColumn.Header.ToString().Equals("wkdate"))
{
dataGridTextColumn.Binding.StringFormat = "{0:d}";
}
if(dataGridTextColumn.Header.ToString().Equals("tin"))
{
dataGridTextColumn.Binding.StringFormat = "{0:t}";
}
}
}
适用于日期,但不适用于时间!这让我疯狂。提前谢谢!
答案 0 :(得分:1)
根据您的格式,您可以更新现有的XAML代码并写如下:
<DataGridTextColumn Binding="{Binding Path=tin, StringFormat=\{0:hh:mm tt\}}" Header="Time In:"/>
希望这有帮助
或者,你能不能在下面。我确信这是有效的,因为我在许多项目中都使用过它。
CS文件代码:
[ValueConversion(typeof(DateTime), typeof(string))]
public class StringTime : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || value.ToString() == "")
{
return "";
}
String str = ((DateTime)value).ToString("hh:mm tt");
return str;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || value.ToString() == "")
{
return value;
}
DateTime dtr = DateTime.MinValue.Date;
dtr = dtr.AddYears(1899);
if (value == null)
return dtr;
dtr = dtr.AddHours(double.Parse((value.ToString().Substring(0, 2))));
dtr = dtr.AddMinutes(double.Parse((value.ToString().Substring(3, 2))));
if(value.ToString().Substring(7, 2) == "PM")
dtr = dtr.AddHours(12);
return dtr;
}
#endregion
}
XAML文件:
<Page.Resources>
<custom:StringTime x:Key="StringTime" />
</Page.Resources>
DataGrid Column Code:
<DataGridTextColumn Binding="{Binding Path=tin, Converter={StaticResource StringTime}}" Header="Time In:"/>
如果您有任何问题,请告诉我。