我在Dropdownlist选择项目时遇到了一些问题。
首先,我将项目添加到Dropdownlist然后选择项目,但它总是抛出异常(堆栈为空)。
异常表示堆栈为空,但我在dropdownlist.
为什么我不能选择?在调试中,我看到它有 90 个项目dropdownlist
我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dateDataBind();
GetMemDetail();
}
}
private void GetMemDetail()
{
var result = (from c in db.Customers
where c.CustomerID == thisCustomerID
select c).FirstOrDefault();
//result.Birthday is '1990/5/10'
//ddl_y item can't be selected, but ddl_m and ddl_d can
ddl_y.Items.FindByValue(result.Birthday.Value.Year.ToString()).Selected = true;
ddl_m.Items.FindByValue(result.Birthday.Value.Month.ToString()).Selected = true;
ddl_d.Items.FindByValue(result.Birthday.Value.Day.ToString()).Selected = true;
}
private void dateDataBind()
{
for (int i = 1920; i < DateTime.Now.Year - 5; i++)
{
tempStr = i.ToString();
ddl_y.Items.Add(new ListItem(tempStr + "Y", tempStr));
}
for (int i = 1; i < 13; i++)
{
tempStr = i.ToString();
ddl_m.Items.Add(new ListItem(tempStr + "M", tempStr));
}
dateDayBind();
}
protected void dateDayBind()
{
ddl_d.Items.Clear();
int mcount = DateTime.DaysInMonth(Convert.ToInt32(ddl_y.SelectedValue), Convert.ToInt32(ddl_m.SelectedValue));
for (int i = 1; i < mcount + 1; i++)
{
tempStr = i.ToString();
ddl_d.Items.Add(new ListItem(tempStr, tempStr));
}
}
Run Code Online (Sandbox Code Playgroud)
“Stack Empty”错误是由我认为的 Visual Studio 设计时功能引起的。可能不相关。
错误消息说明了一切。下拉列表中已经选择了一个不同的项目(1990 年除外),而您也在尝试选择 1990 年。
在选择新项目之前尝试清除选择。您可能还想为其他下拉菜单执行此操作:
ddl_y.ClearSelection();
ddl_y.Items.FindByValue(result.Birthday.Value.Year.ToString()).).Selected = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |