【问题标题】:dropdown display text as variation of value asp.net c#下拉显示文本作为值的变体 asp.net c#
【发布时间】:2017-09-20 00:02:00
【问题描述】:

我有一个下拉列表,其中以编程方式填充了过去 60 天的日期(当前 + 59 天之前)。我想要做的是将下拉列表的值格式化为 yyyy-MM-dd 并将下拉文本显示给用户,例如:Sat, 23 Feb 2017(格式:“ddd, dd-MM- yyyy”)。

我可以让它们都一样,但不知道如何创建变化。

我是否以正确的方式处理这个问题?你能给的任何指点都会很棒!

我在 c# 中填充下拉列表的代码是:

    List<ListItem> dateItems = new List<ListItem>();
    for (int i = 0; i < 60; i++)
    {
        dateItems.Add(new ListItem(DateTime.Now.AddDays(-i).ToString(format: "ddd, dd-MM-yyyy")));
    }
    recDate.DataSource = dateItems;
    recDate.DataBind();

    recDate.Items[0].Selected = true;

目前它在呈现的 HTML 中显示为:

<option value="Mon, 18-09-2017">Mon, 18-09-2017</option>

【问题讨论】:

    标签: c# asp.net date


    【解决方案1】:

    您可以改用this constructor

    List<ListItem> dateItems = new List<ListItem>();
    for (int i = 0; i < 60; i++)
    {
        var date = DateTime.Now.AddDays(-i);
        dateItems.Add(new ListItem(date.ToString("ddd, dd-MM-yyyy"), date.ToString("yyyy-MM-dd")));
    }
    recDate.DataSource = dateItems;
    recDate.DataBind();
    
    recDate.Items[0].Selected = true;
    

    【讨论】:

    • 感谢您的回复卡米洛!我了解您布置的构造函数,但由于某种原因,它似乎只是忽略了逗号后面的部分。有什么想法吗? :-S
    • @cloudseeker 你能添加一个截图/错误消息,你的意思是“忽略逗号后面的部分”吗?
    • 它没有抛出错误,它只是忽略了后续对值格式的请求。使用代码的方式,它只是显示为例如:&lt;option value="Fri, 15-09-2017"&gt;Fri, 15-09-2017&lt;/option&gt; 所以它忽略了 date.ToString("yyyy-MM-dd")) 但不确定原因。跨度>
    【解决方案2】:

    似乎缺少的拼图是:

    recordDate.DataValueField = "Value";
    recordDate.DataTextField = "Text";
    recordDate.DataSource = dateItems;
    recordDate.DataBind();
    

    赢了! :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2018-07-01
      相关资源
      最近更新 更多