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 而不是加一。

   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 回答