1

我有一个代表我们部门重要职能的日期下拉列表。

这些日期年复一年地保持不变。

以下是日期的下拉列表:

             <asp:DropDownList id="txtdte" runat="server">
              <asp:ListItem Value="07/31/2012">Jul 31, 2012</asp:ListItem>  
              <asp:ListItem Value="08/21/2012">Aug 21, 2012</asp:ListItem>  
              <asp:ListItem Value="09/18/2012">Sep 18, 2012</asp:ListItem>  
              <asp:ListItem Value="11/06/2012">Nov 06, 2012</asp:ListItem>  
              <asp:ListItem Value="12/04/2012">Dec 04, 2012</asp:ListItem>  
            </asp:DropDownList>

为了确保正确的日期显示在下拉列表框的顶部,我们有以下代码:

    For Each items As ListItem In txtdte.Items
        If (items.Value.CompareTo(DateTime.Today.ToString("MM/dd/yyyy"))) < 0 Then
            items.Enabled = False
        End If
    Next

这意味着我们从 7 月 31 日开始。一旦 7 月 31 日过去,下一个可用日期将变为当前日期。

直到现在,当管理层决定添加 1 月的日期,即 2013 年 1 月 8 日时,这对我们来说一直很有效。

              <asp:ListItem Value="01/08/2013">Jan 08, 2013</asp:ListItem>

现在,下拉列表框是空白的。

在我看来,2013 年需要进行一些调整才能得到认可,但我不确定是什么。

非常感谢任何想法。

4

1 回答 1

5

我猜这是在执行字符串比较,其中“01/08/2013”​​作为字符串比较小于“12/13/2012”(“0”按字母顺序早于“1”)

尝试更改代码以将值从字符串转换为日期并比较DateTime对象而不是它们的字符串表示:

For Each items As ListItem In txtdte.Items
    If (DateTime.Parse(items.Value).CompareTo(DateTime.Today)) < 0 Then
        items.Enabled = False
    End If
Next
于 2012-12-13T20:34:49.937 回答