0

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

<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 日,它不应该出现在下拉列表中。

我正在画空白。

4

2 回答 2

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;

于 2012-04-26T19:49:56.723 回答
1

如果您可以从最好的选择的数据源中过滤它,但如果不能尝试这样的事情:

eventsDate.Items.Cast<ListItem>().Select(
    i => i.Attributes["display"] = DateTime.Parse(i.Value) >= DateTime.Today ? "block" : "none");
于 2012-04-26T20:37:57.397 回答