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 日が過ぎると、次に利用可能な日付が現在の日付になります。

経営陣が 2013 年 1 月 8 日の 1 月の日付を追加することを決定したときまで、これはうまく機能してきました。

              <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 に答える