我有一个我写的程序。它会打开一个名为editItem.xaml的新窗口。我设置了程序的标题和程序的变量。然后我检查是否DialogResult = true,如果是,那么我用其他代码刷新listview。我可以成功地从列表视图中获取数据,用以下内容填充文本框:
ei.txtEditEffectiveDate.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[1].ToString();
但无论如何都没有格式化数据。所以日期是:06/01/2014 12:00:00
我试过简单地放入ToString(" d");改变格式,但当我这样做时,我得到一个错误:
No overload for method 'ToString' takes 1 arguments
这是我的代码:
private void editEntryInstance()
{
// Open editItem.xaml
editItem ei = new editItem();
// Assign the program a title
ei.Title = "Edit Entry for Item: " + ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[0].ToString();
// Get variables of entry
ei.txtEditItem.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[0].ToString();
ei.txtEditEffectiveDate.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[1].ToString();
ei.txtEditTermDate.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[2].ToString();
ei.txtEditMoq.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[3].ToString();
ei.txtEditSetupCost.Text = ((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[4].ToString();
if (ei.ShowDialog().Value)
{
// Refresh after editing entry
refreshInstance();
}
}
有什么建议吗?
答案 0 :(得分:1)
您正尝试在字符串类型值上应用ToString("d")
。 ToString
类型对象可以使用此DateTime
重载。
您需要将值转换为DateTime
类型对象,然后应用ToString("d")
。
DateTime dt = Convert.ToDateTime(((System.Data.DataRowView)(listView1.SelectedItem)).Row.ItemArray[1]);
ei.txtEditEffectiveDate.Text = dt.ToString("d");
如果值包含自定义格式的日期,则可能需要DateTime.ParseExact
或DateTime.TryParseExact
才能将字符串值解析为DateTime
。