我有以下日期下拉列表选项:
<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日,它不应该显示在下拉列表中。
我画的是空白。
答案 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");