Javascript 具有动态更新的年份列表的用户定义控件

Javascript 具有动态更新的年份列表的用户定义控件,javascript,c#,html,webforms,Javascript,C#,Html,Webforms,我有这个用户定义的控制硬编码年,但我需要动态更新,从给定的一年加上七年开始。这最好用JS来完成吗 <asp:DropDownList ID="ddlYear" runat="server" DefaultValue="0"> <asp:ListItem Text="" Value="0"></asp:ListItem> <asp:ListItem Text="2018" Value="20

我有这个用户定义的控制硬编码年,但我需要动态更新,从给定的一年加上七年开始。这最好用JS来完成吗

<asp:DropDownList ID="ddlYear" runat="server"  DefaultValue="0">
                <asp:ListItem Text="" Value="0"></asp:ListItem>
                <asp:ListItem Text="2018" Value="2018"></asp:ListItem>
                <asp:ListItem Text="2019" Value="2019"></asp:ListItem>
                <asp:ListItem Text="2020" Value="2020"></asp:ListItem>
                <asp:ListItem Text="2021" Value="2021"></asp:ListItem>
                <asp:ListItem Text="2022" Value="2022"></asp:ListItem>
                <asp:ListItem Text="2023" Value="2023"></asp:ListItem>
                <asp:ListItem Text="2024" Value="2024"></asp:ListItem>
                <asp:ListItem Text="2025" Value="2025"></asp:ListItem>
</asp:DropDownList>

您只需使用C代码即可。在页面加载中(不回发时只执行一次),您可以指定列表:

for ( int i = 0; i <= 7; i++ )
{
    ddlYear.Items.Add((DateTime.Now.Year+i).ToString())
}

<代码> >(int i=0;i),而不是将int值直接添加到下拉列表控件的项集合中,或者,也可以考虑使用数据绑定。

IEnumerable<int> myYearList = Enumerable.Range(DateTime.Now.Year, 8);
ddlYear.DataSource = myYearList;
ddlYear.DataBind();

输入错误…使用1而不是年份。Items.Clear()可能会清除DefaultValue=“0”指出这一点是正确的,他不能包含clear命令,只是不能在他的aspx页面中包含硬编码年份。因为这永远不会改变,所以0可以保持硬编码,对吗?默认为当前年份,而不是空白。这在开始时添加了两个空白字段。它在没有插入的情况下正常工作。谢谢!
IEnumerable<int> myYearList = Enumerable.Range(DateTime.Now.Year, 8);
ddlYear.DataSource = myYearList;
ddlYear.DataBind();
<asp:DropDownList ID="ddlYear" AppendDataBoundItems="true" runat="server">
    <asp:ListItem Text="" Value="0" /><br/>
</asp:DropDownList>
// add following code after calling ddlYear.DataBind()
ddlYear.Items.Insert(0, new ListItem(String.Empty, "0"));
ddlYear.SelectedIndex = 0;