gpt4 book ai didi

asp.net - 为什么这个 DropDownList 数据绑定(bind)到 List 不起作用?

转载 作者:行者123 更新时间:2023-12-02 04:13:18 26 4
gpt4 key购买 nike

我正在尝试绑定(bind) List<String>DropDownList在用户控件中。我认为我在做正确的事,但似乎在我的代码执行后 绑定(bind)已清除 .这是审查的代码!

用户控制:

<asp:DropDownList ID="subjectNameDropDown" runat="server"/>
<asp:DropDownList ID="yearLevelDropDown" runat="server"/>

自动生成的设计代码隐藏:
public partial class NewSiteMetadataUserControl {
protected global::System.Web.UI.WebControls.DropDownList subjectNameDropDown;
protected global::System.Web.UI.WebControls.DropDownList yearLevelDropDown;
}

代码隐藏:
public partial class NewSiteMetadataUserControl : UserControl
{
protected override void CreateChildControls()
{
subjectNameDropDown = new DropDownList();
yearLevelDropDown = new DropDownList();
}

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
EnsureChildControls();

// Attempt 1
List<String> subjectNames = GetSubjectValues();
foreach (var subjectName in subjectNames)
subjectNameDropDown.Items.Add(subjectName);
subjectNameDropDown.DataBind();

// Attempt 2
List<String> yearLevels = GetYearLevelValues();
yearLevelDropDown.DataSource = yearLevels;
yearLevelDropDown.DataBind();
}
}

这种方法应该有效吗?

如果应该,我该如何调试代码执行后会发生什么?

最佳答案

是的,这种方法应该行得通,这就是为什么目前不行,

  • 使用 DataBind 完成的 DropDownList需要一个 DataSource .这就是尝试 #1 不起作用的原因。
  • 如果您绑定(bind)到 List<string> ,没有明确的键/值对绑定(bind)。这就是为什么当绑定(bind)到 List<Person> 时(例如),您需要覆盖 .ToString()Person类提供键/值绑定(bind),或手动设置DataTextField , DataValueField .
  • ASP.NET 无法为 string 计算出键/值对。 .

  • 想想 什么 HTML 你要。简单字符串的键/值应该是什么?这样做没有意义。

    由于您并不真正关心“键”(只关心显示的内容),我建议您绑定(bind)到 Dictionary<TKey,TValue>反而。

    要么让你的方法返回它,要么遍历列表并将它们添加到带有索引的字典中。

    关于asp.net - 为什么这个 DropDownList 数据绑定(bind)到 List<String> 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993099/

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