C# 一个dropdownlist的选定索引设置页面上的所有dropdownlist

C# 一个dropdownlist的选定索引设置页面上的所有dropdownlist,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我有一个网页上有4个下拉列表。在页面加载方法中,我让代码隐藏设置dropdownlists的值。问题是,当我设置任何一个dropdownlists时,它会设置所有的dropdownlists protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //populating the dropdownlist with values

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

    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;
        }
    }
}

我尝试将代码复制/粘贴到我目前正在处理的内容中,并更改了名称,得到了相同的结果。如果您能告诉我为什么会出现此问题,我将不胜感激。

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

然后,当您在其中一个项目上设置
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);
            }
ListItem temp=新的ListItem(i+);
ddl_EndMin.Items.Add(临时);
temp=新列表项(i+“”);
ddl_StartMin.Items.Add(临时);
如果(i<24)
{
temp=新列表项(i+“”);
ddl_EndHour.Items.Add(临时);
temp=新列表项(i+“”);
ddl_StartHour.Items.Add(临时);
}

您是否也可以在下拉列表中添加项目的地方发布代码?您是否已订阅下拉列表控件的SelectedIndexChanged事件?我猜你有一些代码。我没有使用下拉列表控件的SelectedIndexChanged事件。没有代码:/@user2433766我想整个事情应该在一个!iPostBack,每次加载页面时都会填充下拉列表。请尝试在中包装for循环!我倒贴为well@user2433766我们是否可以看到一个或两个ddl声明?(标记)@Klors我认为每个下拉列表都有相同的项目集合并不重要。设置下拉列表中的选定项时,使用特定的controlYep,创建多个for循环的快速测试修复了该问题。除了4个for循环外,还有更有效的方法填充下拉列表吗?看看我的编辑,在将其添加到项目集合之前,您只需要一个新的
ListItem
。那么,你可以在同一个循环中完成这一切。@Klors任何有效的方法lol:D。。。啊凯。。我又读了一遍你的答案。我必须自己试一试
ListItem
是一个类的实例,当您将它添加到
DropDownList
的Items集合时,它是通过引用添加的
,而不是通过值添加的
。然后,当它的selected属性设置为true时,它在每个列表中都是相同的,因为它实际上是每个列表中对
ListItem
的相同引用。
            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);
            }