1

ユーザーが生年月日を入力する登録フォームがあります。

新しい年が来るたびにリスト項目を自動更新するコードを作成することは可能ですか? 各フォームに戻って新しい年 (例: 2014) を追加する手間が省けます

<asp:DropDownList ID="date3" runat="server">
        <asp:ListItem Value="">#</asp:ListItem>
        <asp:ListItem>2013</asp:ListItem>
        <asp:ListItem>2012</asp:ListItem>
        <asp:ListItem>2011</asp:ListItem>
        <asp:ListItem>2010</asp:ListItem>
        <asp:ListItem>2009</asp:ListItem>
        <asp:ListItem>2008</asp:ListItem>
        <asp:ListItem>2007</asp:ListItem>

私はすでにこのスニペットを使用して、マスター ページの著作権ステートメントに年を自動追加しています<%=DateTime.Now.Year%>

答え

コード ビハインド VB

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            AutoYearRange()

        End If
    End Sub

    Public Sub AutoYearRange()
        date3.Items.Clear() '' This just ensures your list is now empty..
        For i As Integer = Now.AddYears(0).Year To Now.AddYears(-112).Year Step -1
            date3.Items.Add(New ListItem(i.ToString(), i.ToString()))
        Next

        date3.Items.Insert(0, New ListItem("- Please Select Date -", ""))

    End Sub

ダレンに感謝!

4

1 に答える 1

3

これをプログラムで入力します。

だから、あなたのコードビハインドで、このようなことをしてください - これはVBです

    date3.Items.Clear() '' This just ensures your list is now empty..
    For i As Integer = Now.AddYears(-5).Year To Now.AddYears(10).Year
        date3.Items.Add(New ListItem(i.ToString(), i.ToString()))
    Next

そしてC#で

   date3.Items.Clear(); // This just ensures your list is now empty..
   for (int i = Now.AddYears(-5).Year; i <= Now.AddYears(10).Year; i++) {
      date3.Items.Add(new ListItem(i.ToString(), i.ToString()));
   }

これには、今日の年がかかり、出発点としてそこから 5 を引き、さらに 10 年先まで進みます。-5 と 10 は、必要に応じて変更できます。

最初に空白のようなものを追加したい場合は、「日付を選択」などと言って、上記のループを実行した後にこれを追加できます。

次のようにします (VB):

    date3.Items.Insert(0, New ListItem("- Please Select Date -", ""))

または C#

    date3.Items.Insert(0, new ListItem("- Please Select Date -", ""));

アップデート

逆に行くには、次のように単純に高い数字から始めて逆方向に進みます: (C#) -i--代わりに使用することに注意してi++ください - これはループごとに 1 を足すのではなく 1 を引きます。

   date3.Items.Clear(); // This just ensures your list is now empty..
   for (int i = Now.AddYears(10).Year; i >= Now.AddYears(-5).Year; i--) {
      date3.Items.Add(new ListItem(i.ToString(), i.ToString()));
   }

そしてVBで

    For i As Integer = Now.AddYears(10).Year To Now.AddYears(-5).Year Step -1
        date3.Items.Add(New ListItem(i.ToString(), i.ToString()))
    Next
于 2013-07-03T13:19:05.830 に答える