我想在wpf应用程序中将字符串转换为日期类型。以下是代码。
Connection con1 = new Connection();
cmbStatementDate.Items.Clear();
con1.dataGet("SELECT distinct statement_date from stockstatement ORDER BY statement_date asc");
DataTable dt1 = new DataTable();
con1.sda.Fill(dt1);
foreach (DataRow dr1 in dt1.Rows)
{
cmbStatementDate.Items.Add(dr1["statement_date"].ToString());
}
如何将其结果转换为日期格式(DD-MM-YYYY)并保存到cmbStatementDate(combobox)中。
谢谢。
答案 0 :(得分:0)
我假设该字段是datetime
或date
字段。如果该字段为varchar
,则应在SQL查询中将其解析为datetime
或date
。
无需将日期转换为字符串,甚至无需一一添加。您可以使用数据绑定直接绑定到DataTable。
Windows窗体
数据绑定组合框在How to: Bind a Windows Forms ComboBox or ListBox Control to Data
中进行了描述您还可以使用FormatString
属性来指定控件应如何显示日期,例如::
//Use local short date format
cmbStatementDate.FormatString = "d";
//or hard-coded short format
// cmbStatementDate.FormatString = "MM-dd-YYYY";
cmbStatementDate.DisplayMember = "statement_date";
cmbStatementDate.DataSource=dt;
用于指定FormatString的 best 最佳位置,DisplayMember
是表单设计器本身,而不是代码隐藏文件。这使得本地化和显示格式更加容易。
数据绑定意味着每次添加新项时都无需重新绘制组合框。加载所有数据后,才会重新绘制整个组合。
还可以从设置或资源文件中提取控件属性。这样一来,只需创建新的设置或资源文件,某人就可以对应用程序进行本地化。
通常,本地化,全球化和数据绑定自2002年以来就已植入.NET。您可以可以创建一个应用程序,并轻松地将其本地化为不同的标记,而无需手工格式化字符串。
您通常可以在以下内容中了解有关数据绑定的信息:
一些警告
不要使用文档中显示的数据绑定顺序:
cmbStatementDate.DataSource=dt;
cmbStatementDate.DisplayMember = "statement_date";
这将尽可能使用原始DisplayMember
值重新绘制控件两次。
WPF
数据绑定和格式字符串也可以在WPF中使用,甚至可能更易于使用。如果不使用数据绑定,则可以使用:
创建格式化的组合框。<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date" ItemStringFormat="d" />
或
<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date" ItemStringFormat="dd-MM-yyyy" />
并使用:
加载数据cmbStatementDate.ItemsSource=dt1;
此代码看起来像数据绑定,但不是。
使用数据绑定,该组合可以绑定到代码隐藏或ViewModel类中的属性,例如:
<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date"
ItemStringFormat="dd-MM-yyyy"
ItemsSource="{Binding Path=MyDateData}"
SelectedValue="{Binding Path=SelectedDate}" />
在这种情况下,MyDateData
和SelectedDate
指代代码隐藏或ViewModel中的属性。
答案 1 :(得分:-2)
您可以像这样编辑代码
Connection con1 = new Connection();
cmbStatementDate.Items.Clear();
con1.dataGet("SELECT distinct statement_date from stockstatement ORDER BY statement_date asc");
DataTable dt1 = new DataTable();
con1.sda.Fill(dt1);
foreach (DataRow dr1 in dt1.Rows)
{
cmbStatementDate.Items.Add(Convert.ToDateTime(dr1["statement_date"]).ToString("DD-MM-YYYY"));
}
答案 2 :(得分:-3)
您是说它已经是表上的date \ datetime类型,并且您想将其视为dd-MM-yyyy字符串吗?如果是这样:
((DateTime)dr1["statement_date"]).ToString("dd-MM-yyyy");
会这样做。