如果日期值小于当前日期,我该如何隐藏它?

时间:2012-04-26 19:45:08

标签: asp.net

我有以下日期下拉列表选项:

<asp:DropDownList id="eventsDate" runat="server">
   <asp:ListItem Value="04/31/2012">Apr 31, 2012</asp:ListItem>
   <asp:ListItem Value="05/21/2012">May 21, 2012</asp:ListItem>
   <asp:ListItem Value="07/22/2012">Jul 22, 2012</asp:ListItem>
   <asp:ListItem Value="10/16/2012">Oct 16, 2012</asp:ListItem>
   <asp:ListItem Value="11/12/2012">Nov 12, 2012</asp:ListItem>
   <asp:ListItem Value="12/18/2012">Dec 18, 2012</asp:ListItem>
</asp:DropDownList>

如果下拉列表中的任何日期小于今天的日期,请将其隐藏。

例如,今天的日期是2012年4月26日。假设下拉列表中的第一个日期是2012年4月25日,它不应该显示在下拉列表中。

我画的是空白。

2 个答案:

答案 0 :(得分:1)

你应该在数据源本身停止它 - 因为它没有预绑定的任何事件方法(比如转发器 - ItemCreated事件)......

因此,如果您的dataTable具有所有值,则应将其过滤为:

var myNewData = (from  a in dt.AsEnumerAble() where DateTime.Parse(a["time"])<DateTime.Now.Date.AddDays(1) select a).CopyToDataTable()

编辑

DropDownlist控件没有任何方法可以告诉你:“好的我要添加一个新项目,你可以检查他并告诉我是否添加它”

你在DropDownlist中没有这个功能。

唯一的选择(我看到)是在得到结果时过滤它。

假设你在数据表中得到它 - 你应该创建一个只保存相关项目的新数据表。

我写的代码是Linq2XML。

你只需要添加:

使用system.linq;

答案 1 :(得分:1)

如果您可以从数据源中过滤掉这是您最好的选择,但如果没有尝试这样的话:

eventsDate.Items.Cast<ListItem>().Select(
    i => i.Attributes["display"] = DateTime.Parse(i.Value) >= DateTime.Today ? "block" : "none");