我有两个下拉列表。
第一个下拉列表是月份列表,第二个下拉列表是几天。
我希望当我从第一次下拉菜单中选择月份时,第二次下拉菜单的项目会根据第一次下拉菜单的选择而变化。
例如 - 如果我从第一个下拉列表中选择1月,则第二个下拉列表变为1到31.在2月份的选择中,第二个下拉列表变为1到29。
我正在尝试使用此代码但无法正常工作 -
protected void Page_Load(object sender, EventArgs e)
{
getDays(dropdownMonth.SelectedValue);
}
public void getDays(string selectedMonth)
{
int i = 0;
dropdownDays.Items.Clear();
switch (selectedMonth)
{
case "January":
i = 31;
break;
case "February":
i = 29;
break;
case "March":
i = 31;
break;
case "April":
i = 30;
break;
case "May":
i = 31;
break;
case "June":
i = 30;
break;
case "July":
i = 31;
break;
case "August":
i = 31;
break;
case "September":
i = 30;
break;
case "October":
i = 31;
break;
case "November":
i = 30;
break;
case "December":
i = 31;
break;
}
for (int j = 1; j <= i; j++)
{
dropdownDays.Items.Add(j.ToString());
}
int Month = DateTime.ParseExact(Convert.ToString(dropdownMonth.SelectedValue), "MMMM", CultureInfo.CurrentCulture).Month;
int day = Convert.ToInt32(dropdownDays.SelectedValue);
int year = DateTime.Now.Year;
DateTime date = new DateTime(year, Month, day);
lblEndDateValue.Text = String.Format("{0:dd MMMM}", date.AddDays(-1));
如果我从我的代码中移除dropdownmonth.items.clear();
,那么它可以正常工作,但之后会在此下拉列表中将新日期列表添加到上一个列表中。
答案 0 :(得分:2)
对第一个下拉列表使用Selected index changed事件,并为第一个下拉列表设置autopostback = true
protected void dropdownMonth_SelectedIndexChanged(object sender, EventArgs e)
{
getDays(dropdownMonth.SelectedValue);
}
设置AutoPostBack =&#34; true&#34;对于dropdownDays,
protected void dropdownDays_SelectedIndexChanged(object sender, EventArgs e)
{
LabelDays.Text = dropdownDays.SelectedValue;
}
答案 1 :(得分:0)
试试这个..你必须在!ispostback
内绑定你的代码。否则每个回发上的值都会被重置..
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostback)
{
//getDays(dropdownMonth.SelectedValue);
}
}
您可以在selectedidexchanged
月份事件下拉列表中调用您的函数,并为下拉列表设置Autopostback=true
。我不认为您必须在页面加载时调用它。
protected void dropdownMonth_SelectedIndexChanged(object sender, EventArgs e)
{
getDays(dropdownMonth.SelectedValue);
}