【问题标题】:Binding array + one object to Dropdownlist将数组 + 一个对象绑定到 Dropdownlist
【发布时间】:2011-04-24 12:59:27
【问题描述】:

我有一个 Person 类型的数组,其中包含字符串对象:FirstName、LastName、login。

我已将此绑定到下拉列表。

现在,除了这个数组,我还想再显示一个名为“Desk”的项目。我该怎么做?

我当前的代码是:

Person[] traders = GetTraders();
ddl_trader.Items.Clear();
ddl_trader.DataSource = traders;
ddl_trader.DataTextField = "LastName";
ddl_trader.DataValueField = "Login";
ddl_trader.DataBind();

我还希望我添加的一个额外项目成为默认选定项目。

【问题讨论】:

  • 什么是“办公桌”? Person 的属性?带有指向 Person 的链接的独立对象?
  • 一个独立的字符串。它不是 Person 类型。

标签: c# asp.net data-binding drop-down-menu


【解决方案1】:

其中一种方法是将GetTraders() 的结果加载到List<Person> 中。然后,您可以将一个或多个新的 Person 对象添加到列表中,然后再将其绑定到您的下拉列表。

List<Person> traders = new List<Person>(GetTraders());
traders.Add(new Person() { LastName = "Foo", Login = "Bar" });
ddl_trader.DataSource = traders;

您还可以定义一个额外的数组并将其连接到结果中,而不是创建一个组合集合。 (注意:这会将两个不同的数组视为一个序列,但支持数组仍然是独立的)。

Person[] traders = GetTraders();
Person[] moreTraders = new Person[] { new Person() { LastName = "Foo", Login = "Bar" } };
ddl_trader.DataSource = traders.Concat(moreTraders);

【讨论】:

  • 我想知道是否可以在不将其添加到列表的情况下完成。因为,它实际上只是一个字符串“Desk”,不需要名字、姓氏等。
  • 明白了。如果在不创建另一个 Person 类数组的情况下无法找到方法,我将使用您的第二种方法。
  • 出于某种原因,traders.Concat 返回错误。我需要使用 Concat 的一些程序集或参考吗?
  • @xbonez,是IEnumerable&lt;T&gt;从.NET 3.5+,C# 3.0+的扩展方法。如果您使用的是兼容平台(想想:Visual Studio 2008 或 2010),则需要在代码隐藏中引用 System.Core.dll 和 using System.Linq; 语句。如果您使用的是 .NET 的早期版本,请尝试第一种方法(VS 2005+,using System.Collections.Generic;)。
【解决方案2】:

您可以将AppendDataBoundItems 属性设置为true(默认为false),手动添加您的项目,然后执行数据绑定过程以添加剩余的项目。 AppendDataBoundItems 确定列表是否在数据绑定期间被清除。

ddl_trader.Items.Clear();
ddl_trader.AppendDataBoundItems = true;
ddl_trader.Items.Add("Desk");
ddl_trader.DataTextField = "LastName";
ddl_trader.DataValueField = "Login";
ddl_trader.DataSource = traders;
ddl_trader.DataBind();

如果你需要在列表绑定后添加新的项目,你可以这样做

ddl_trader.Items.Insert(0, "Desk");

这不需要将AppendDataBoundItems 设置为true

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2010-09-26
    相关资源
    最近更新 更多