注册 登录
编程论坛 ASP.NET技术论坛

ASP.NET 年月日实现联动

zhuwj 发布于 2011-04-23 10:58, 960 次点击
年和月不需要联动,只要月和日联动就OK了。在月的SelectedIndexChanged事件里根据年和月来动态的添加日的数据。
选择月后,日没有反应
<asp:DropDownList ID="birthYear" runat="server"></asp:DropDownList>年
         <asp:DropDownList ID="birthMonth" runat="server" OnSelectedIndexChanged="birthMonth_SelectedIndexChanged">
            <asp:ListItem>1</asp:ListItem>
            <asp:ListItem>2</asp:ListItem>
            <asp:ListItem>3</asp:ListItem>
            <asp:ListItem>4</asp:ListItem>
            <asp:ListItem>5</asp:ListItem>
            <asp:ListItem>6</asp:ListItem>
            <asp:ListItem>7</asp:ListItem>
            <asp:ListItem>8</asp:ListItem>
            <asp:ListItem>9</asp:ListItem>
            <asp:ListItem>10</asp:ListItem>
            <asp:ListItem>11</asp:ListItem>
            <asp:ListItem>12</asp:ListItem>
        </asp:DropDownList>&nbsp; 月&nbsp;<asp:DropDownList ID="birthDay" runat="server">




protected void birthMonth_SelectedIndexChanged(object sender, EventArgs e)
        {
            birthDay.Items.Clear();
            switch (birthMonth.SelectedValue)
            {
                case "1":
                case "3":
                case "5":
                case "7":
                case "8":
                case "10":
                case "12":
                    for (int i = 1; i <= 31; i++)
                    {
                        birthDay.Items.Add(new ListItem(Convert.ToString(i), Convert.ToString(i)));
                    }
                    break;
                case "4":
                case "6":
                case "9":
                case "11":
                    for (int i = 1; i <= 30; i++)
                    {
                        birthDay.Items.Add(new ListItem(Convert.ToString(i), Convert.ToString(i)));
                    }
                    break;
                case "2":
                    if ((Convert.ToInt32(birthYear.SelectedValue) % 4 == 0) || (Convert.ToInt32(birthYear.SelectedValue) % 100 == 0))
                    {
                        for (int i = 1; i <= 29; i++)
                        {
                            birthDay.Items.Add(new ListItem(Convert.ToString(i), Convert.ToString(i)));
                        };
                    }
                    else
                    {
                        for (int i = 1; i <= 28; i++)
                        {
                            birthDay.Items.Add(new ListItem(Convert.ToString(i), Convert.ToString(i)));
                        };
                    }
                    break;
            }
        }
6 回复
#2
永强2011-05-09 15:33
有可以不刷新的方法啊!用个updatepanel咯!
#3
hhy4204596742011-05-09 19:18
你在birthMonth这个控件中添加个属性:AutoP开头的, 我不记得咋个写了,你自己看看,意思就是:当当前项改变时是否回发,就是这个意思,你找找嘛,将其设置为True,应该就可以了。

还有,其实你的月份那样子在前台写了12个月,很麻烦,也不是很标准,虽然没有错,你可以在后台加载的时候将12个月添加进去就行了,
 for (int i = 1; i <= 12; i++)
   {
      birthMonth.Items.Add(new ListItem(Convert.ToString(i), Convert.ToString(i)));
   }
这样子,代码更加标准点,而且也少些噻,呵呵...

#4
zklwzh2011-05-13 12:53
建议你搜索下相关js来实现。
#5
VV程序员2011-05-13 17:05
<asp:DropDownList ID="birthMonth" runat="server" OnSelectedIndexChanged="birthMonth_SelectedIndexChanged" AutoPostback="true">
#6
VV程序员2011-05-13 17:05
<asp:DropDownList ID="birthMonth" runat="server" OnSelectedIndexChanged="birthMonth_SelectedIndexChanged" AutoPostback="true">
1