gpt4 book ai didi

c# - 发布 DropDownList.Items.Addrange 和选择值时出现问题

转载 作者:行者123 更新时间:2023-11-30 16:33:18 28 4
gpt4 key购买 nike

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

但直奔问题(我已经简化了一点):

首先是我的 aspx 页面的摘录:

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

}

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

我也尝试过使用非静态列表,但这并不重要。我测试过的唯一“有效”的是实例化两个不同的列表——只有这样下拉列表项才会按我的意愿被选择。因此,添加这样的列表可以使事情正常进行(但很难看):

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

};
}

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

关于c# - 发布 DropDownList.Items.Addrange 和选择值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com