DataTextFormatString在DropDownList中不起作用

时间:2016-11-27 01:14:50

标签: c# asp.net .net

假设我正在编写一个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中)。

1 个答案:

答案 0 :(得分:2)

问题出在DataTable,而不是DataTextFormatString

您需要在DataTable中指定列的DataType,否则它将默认为字符串,您无法应用格式。 所以使用

dt.Columns.Add("MyDate", typeof(DateTime));

然后DataTextFormatString中的格式将起作用

DataTextFormatString="{0:dd-MM-yyyy}"