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

奇怪问题

meteor86 发布于 2008-04-15 20:35, 480 次点击
我用3个DropDownList分别显示,年,月,日.   假如我用一个按钮让它显示出来,怎么一点击,无论,日,选的是什么数字,最后都显示 1 呢?

注:前两个DropDownList的autopostback属性为true.
   年和月的DropDownList的item我是自己加上去的,日的是根据年月绑定的.呜呜.

如下:
    protected void Page_Load(object sender, EventArgs e)
    {
        int year = Convert.ToInt32(this.yearlist.SelectedItem.Text);
        int month = Convert.ToInt32(this.monthlist.SelectedItem.Text);

        int day = dayCount(year, month);
        this.daylist.Items.Clear();



        for (int i = 1; i <= day; i++)
        {
            this.daylist.Items.Add(i.ToString());
        }
    }
    // 判断是否是闰年
    private bool isLeapYear(int year)
    {
        return (((year % 4 == 0) && (year % 100 != 0)) || ((year % 100 == 0) && (year % 400 == 0)));
    }

    // 根据年份和月份计算该月的日数
    private int dayCount(int year, int month)
    {
        int day = 0;
        if (isLeapYear(year))
        {
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    day = 30;
                    break;
                case 2:
                    day = 29;
                    break;
                default:
                    day = -1;
                    break;
            }

            return day;
        }
        else
        {
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    day = 30;
                    break;
                case 2:
                    day = 28;
                    break;
                default:
                    day = -1;
                    break;
            }

            return day;
        }
    }
2 回复
#2
hebingbing2008-04-15 21:12
你将判断日到底是多少天的事件放进两个dropdownlist的SelectedIndexChanged事件应该就没有问题了,然后在Page_Load事件判断IsPostBack让它在第一次加载的时候给日添加……
事件的执行是有先后顺序的,当你点按钮的时候页面刷新,也就是说页面重新加载执行Page_Load事件,完了之后你的日的dropdownlist不就成1了吗?
#3
meteor862008-04-15 22:10
哦,呵呵,谢你啦!
1