3

我有一个页面上有 4 个下拉列表的网页。在页面加载方法中,我有设置下拉列表值的代码。问题是,当我设置任何一个下拉列表时,它会设置所有下拉列表。

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            //populating the dropdownlist with values
            for (int i = 0; i < 60; i++)
            {
                ListItem temp = new ListItem(i + "");
                ddl_EndMin.Items.Add(temp);
                ddl_StartMin.Items.Add(temp);
                if (i < 24)
                {
                    ddl_EndHour.Items.Add(temp);
                    ddl_StartHour.Items.Add(temp);
                }
            }

            //Setting the dropdownlists with the values from the conference variable
            ddl_EndHour.SelectedIndex = conference.EndDate.Hour;
            ddl_StartMin.SelectedIndex = conference.StartDate.Minute;
            ddl_StartHour.SelectedIndex = conference.StartDate.Hour;
            ddl_EndMin.SelectedIndex = conference.EndDate.Minute;
        }
    }
}

我不确定为什么将这些下拉列表之一设置为选定索引会设置所有这些。我还尝试用 ListBox 替换其中一个,并且还设置了 ListBox 的值。另一个页面上有代码使用此选定的索引方法设置 2 个下拉列表,但使用状态而不是数字,效果很好。

ddl_EndMin.SelectedIndex = ddl_EndMin.Items.IndexOf(ddl_EndMin.Items.FindByValue(conference.EndDate.Minute.ToString()));
ddl_EndHour.SelectedIndex = ddl_EndHour.Items.IndexOf(ddl_EndHour.Items.FindByValue(conference.EndDate.Hour.ToString()));

我尝试将该代码复制/粘贴到我目前正在处理的代码中并更改名称,我得到了相同的结果。您能给我关于为什么会出现这个问题的任何见解,我们将不胜感激。

4

1 回答 1

3

猜测是因为您在所有下拉列表中使用相同的项目集合。

然后,当您selected在其中一个项目上设置属性时,它在所有列表中都具有该属性,因为它在所有列表中都是相同的对象引用。

如果你在循环中这样做会发生什么

            ListItem temp = new ListItem(i + "");
            ddl_EndMin.Items.Add(temp);
            temp = new ListItem(i + "");
            ddl_StartMin.Items.Add(temp);
            if (i < 24)
            {
                temp = new ListItem(i + "");
                ddl_EndHour.Items.Add(temp);
                temp = new ListItem(i + "");
                ddl_StartHour.Items.Add(temp);
            }
于 2013-05-29T19:57:19.477 回答