C# 一个dropdownlist的选定索引设置页面上的所有dropdownlist
我有一个网页上有4个下拉列表。在页面加载方法中,我让代码隐藏设置dropdownlists的值。问题是,当我设置任何一个dropdownlists时,它会设置所有的dropdownlistsC# 一个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
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);
}