C#ASP.NET日期下拉框年月日(包含闰年)的填充

一、前端定义textbox控件

 <asp:DropDownList ID="year" runat="server">
            </asp:DropDownList>
            年 
            <asp:DropDownList ID="month" runat="server" AutoPostBack="true" OnSelectedIndexChanged="month_SelectedIndexChanged">
            </asp:DropDownList>
&nbsp;日:<asp:DropDownList ID="day" runat="server">
            </asp:DropDownList>

(1)AutoPostBack

autopostback是在使用者点击月份下拉框之后立即对日期下拉框做出反应,使日期下拉框立马显示日期。

(2)OnSelectedIndexChanged

当用户在选择控件中选择不同的选项时,会触发OnSelectedIndexChanged事件。可以通过在控件上设置OnSelectedIndexChanged属性来指定要执行的服务器端代码。其绑定的是后端会编写的一个函数。

二、后端函数实现

(1)填充年份和月份

因为年份和月份不用区分闰年,所以可以直接对其下拉框进行填充。if (!IsPostBack)是为了在选择下拉框内容之后进行下一步操作时不让下拉框刷新。

if (!IsPostBack)
            {
                int y = DateTime.Now.Year;//取出今天的年份存入y
                for (int i = y; i >= y - 30; i--)
                {
                    year.Items.Add(i.ToString());//在year控件当中加入倒退30年的年份,用tostring转换为字符串
                }
                for (int j = 12; j >= 1; j--)
                {
                    month.Items.Add(j.ToString());//复选框中加入month的十二个月
                }

            }

(2)闰年对应日期计算

protected void month_SelectedIndexChanged(object sender, EventArgs e)
        {
            int y = int.Parse(year.SelectedValue);//int输入的需要int转换
            int m = int.Parse(month.SelectedValue);
            int day0 = 31;//默认为大月天数
            if (m == 4 || m == 6 || m == 9 || m == 11)
                day0 = 30;//4、6、9、11月不会随年份变化而变化可以直接设置
            if (m == 2)
            {
                if (m == 2 && (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0))//闰年的判断,如果是闰年则2月的日期需要改为29天
                    day0 = 29;
                else day0 = 28;//不是闰年则为28天
            }
            day.Items.Clear();//清空形成的复选框内的内容,避免造成出现2*20个年份或者2*12个月份的情况
            for (int i = 1; i <= day0; i++)
                day.Items.Add(i.ToString());//将经过是否闰年判断的日期填入日期的复选框

        }

注意事项

编写后端时注意前端控件的控件ID是否正确

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值