假设我正在编写一个ASP.NET应用程序,该应用程序使用DropDownList
从编程创建的DateTime
中显示包含DataTable
个对象的单个列。我想使用DateTime
的特定格式,因此我在DataTextFormatString
添加了DropDownList
参数。
Page.aspx(网站):
[...]
<asp:DropDownList ID="ddList1" runat="server"
DataTextField="MyDate" DataTextFormatString="{0:d}" />
[...]
Page.aspx.cs(script):
[...]
DataTable dt = new DataTable();
dt.Columns.Add("MyDate");
for (int i = 0; i < 5; i++)
{
DataRow dr = dt.NewRow();
dr["MyDate"] = DateTime.Now.AddDays(i);
dt.Rows.Add(dr);
}
ddList1.DataSource = dt.DefaultView;
ddList1.DataBind();
[...]
但是,该格式根本不会改变。如果我在{0:d}
之外添加虚拟文本,它会出现在我的页面上,但DateTime
对象只是不想格式化我想要的格式。在寻找解决方案后,字面上每个人都说我需要正确设置DataTextFormatString
。但来吧,我不是那样做的吗?我在这里缺少什么?
巨大的注释:我希望DataTextFormatString
保持声明性(在Page.aspx中)。
答案 0 :(得分:2)
问题出在DataTable
,而不是DataTextFormatString
。
您需要在DataTable中指定列的DataType,否则它将默认为字符串,您无法应用格式。 所以使用
dt.Columns.Add("MyDate", typeof(DateTime));
然后DataTextFormatString中的格式将起作用
DataTextFormatString="{0:dd-MM-yyyy}"