我正在使用以下代码来进行日月选择使用下拉我的日期根据月份而变化,如果2月份超过28天,如果游行超过31但是在我的月份下降它仅显示1月12日时间。我没有收到错误这是我的代码..
private int Day
{
get
{
if (Request.Form[ddlDay.UniqueID] != null)
{
return int.Parse(Request.Form[ddlDay.UniqueID]);
}
else
{
return int.Parse(ddlDay.SelectedItem.Value);
}
}
set
{
this.PopulateDay();
ddlDay.ClearSelection();
ddlDay.Items.FindByValue(value.ToString()).Selected = true;
}
}
private int Month
{
get
{
return int.Parse(ddlMonth.SelectedItem.Value);
}
set
{
this.PopulateMonth();
ddlMonth.ClearSelection();
ddlMonth.Items.FindByValue(value.ToString()).Selected = true;
}
}
private int Year
{
get
{
return int.Parse(ddlYear.SelectedItem.Value);
}
set
{
this.PopulateYear();
ddlYear.ClearSelection();
ddlYear.Items.FindByValue(value.ToString()).Selected = true;
}
}
public DateTime SelectedDate
{
get
{
try
{
return DateTime.Parse(this.Month + "/" + this.Day + "/" + this.Year);
}
catch
{
return DateTime.MinValue;
}
}
set
{
if (!value.Equals(DateTime.MinValue))
{
this.Year = value.Year;
this.Month = value.Month;
this.Day = value.Day;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (this.SelectedDate == DateTime.MinValue)
{
this.PopulateYear();
this.PopulateMonth();
this.PopulateDay();
}
}
else
{
if (Request.Form[ddlDay.UniqueID] != null)
{
this.PopulateDay();
ddlDay.ClearSelection();
ddlDay.Items.FindByValue(Request.Form[ddlDay.UniqueID]).Selected = true;
}
}
}
private void PopulateDay()
{
ddlDay.Items.Clear();
ListItem lt = new ListItem();
lt.Text = "DD";
lt.Value = "0";
ddlDay.Items.Add(lt);
int days = DateTime.DaysInMonth(this.Year, this.Month);
for (int i = 1; i <= days; i++)
{
lt = new ListItem();
lt.Text = i.ToString();
lt.Value = i.ToString();
ddlDay.Items.Add(lt);
}
ddlDay.Items.FindByValue(DateTime.Now.Day.ToString()).Selected = true;
}
private void PopulateMonth()
{
ddlMonth.Items.Clear();
ListItem lt = new ListItem();
lt.Text = "MM";
lt.Value = "0";
ddlMonth.Items.Add(lt);
for (int i = 1; i <= 12; i++)
{
lt = new ListItem();
lt.Text = Convert.ToDateTime(i.ToString() + "/1/1900").ToString("MM");
lt.Value = i.ToString();
ddlMonth.Items.Add(lt);
}
ddlMonth.Items.FindByValue(DateTime.Now.Month.ToString()).Selected = true;
}
private void PopulateYear()
{
ddlYear.Items.Clear();
ListItem lt = new ListItem();
lt.Text = "YYYY";
lt.Value = "0";
ddlYear.Items.Add(lt);
for (int i = DateTime.Now.Year; i >= 1950; i--)
{
lt = new ListItem();
lt.Text = i.ToString();
lt.Value = i.ToString();
ddlYear.Items.Add(lt);
}
ddlYear.Items.FindByValue(DateTime.Now.Year.ToString()).Selected = true;
}
}
答案 0 :(得分:0)
看起来第一个使用循环传递的i
被认为是日而不是月,更好的方法是使用DateTime
构造函数&#39; s { {3}}以年,月,日作为输入,而非以这种方式将string
转换为Date
:
lt.Text = new DateTime(1900,i,1).ToString("MM");