其他分享
首页 > 其他分享> > 发行DropDownList.Items.Addrange并选择一个值时出现问题

发行DropDownList.Items.Addrange并选择一个值时出现问题

作者:互联网

我是C#的新手,因为我主要使用Java.

但是直接解决这个问题(我已经简化了一点):

首先摘录我的aspx-page:

<div class="dates">
    <div class="firstselection">
        <asp:DropDownList ID="DDFromMonth" runat="server">
        </asp:DropDownList>
        <asp:DropDownList ID="DDToMonth" runat="server">
        </asp:DropDownList>
    </div>
</div>

和背后的代码:

    public partial class Argh: System.Web.UI.Page
    {
  static  List<ListItem> monthList = new List<ListItem>
  {
   new ListItem("Jan", "1"),
   new ListItem("Feb", "2"),
   new ListItem("Mar", "3"),
   new ListItem("Apr", "4"),
   new ListItem("May", "5"),
   new ListItem("Jun", "6"),
   new ListItem("Jul", "7"),
   new ListItem("Aug", "8"),
   new ListItem("Sep", "9"),
   new ListItem("Oct", "10"),
   new ListItem("Nov", "11"),
   new ListItem("Dec", "12")
  };



        protected void Page_Load(object sender, EventArgs e)
        {
   DDFromMonth.Items.AddRange(monthList.ToArray());  // DDFromMonth is a asp.net dropdown list
   DDToMonth.Items.AddRange(monthList.ToArray()); // DDToMonth is a asp.net dropdown list

            DDFromMonth.SelectedValue = "6"; 
            DDToMonth.SelectedValue = "7"; // also changes DDFromMonth value (GODDAMN!)

 }

好的,我有一个包含月份的静态列表.我将此列表的范围添加到下拉控件和DDFromMonth中,分别选择“ 6”(6月)和DDToMonth“ 7”(7月).但是,这两个结果都显示在7月!

我也尝试过使用非静态列表,但这没关系.我测试“有效”的唯一方法是实例化两个不同的列表-然后,我才选择了dropdownlist-items.因此,添加这样的列表可以使事情正常(但是很丑):

DDFromMonth.Items.AddRange(monthList.ToArray());
DDFromMonth.Items.AddRange(aDuplicatedMonthList.ToArray()); 

我已经通过asp.net添加数据源来解决此问题,但是,了解此处发生的事情仍然很有趣.为什么我必须为每个下拉列表实例化一个新列表.每个控件不是都有自己的指针来跟踪自己的值吗?感觉指针以某种方式在列表中共享,但是我对那些更了解C#和ASP.NET的人留有思索

解决方法:

ListItems直接添加到DropDownList控件.因此,实际上,您正在做的是将完全相同的列表添加到2个不同的控件中.因此,将仅实现最后选择的项,因为同一列表只能有一个选择的ListItem.

一个简单的方法来做你想要的是这样的:

protected ListItem[] MonthList
{
   get
   {
      return new ListItem[]
      {
       new ListItem("Jan", "1"),
       new ListItem("Feb", "2"),
       new ListItem("Mar", "3"),
       new ListItem("Apr", "4"),
       new ListItem("May", "5"),
       new ListItem("Jun", "6"),
       new ListItem("Jul", "7"),
       new ListItem("Aug", "8"),
       new ListItem("Sep", "9"),
       new ListItem("Oct", "10"),
       new ListItem("Nov", "11"),
       new ListItem("Dec", "12")

       };
}

现在,您将始终创建一个新数组.

标签:drop-down-menu,asp-net,c
来源: https://codeday.me/bug/20191209/2097518.html