选择的下拉列表项抛出异常(堆栈为空)

Lor*_*zoC 0 c# asp.net

我在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)

预期抛出:System.InvalidOperationException:堆栈为空。 堆栈为空

Ogu*_*gul 5

“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)