【问题标题】:How can i add a data object of a class array to a drop down list?如何将类数组的数据对象添加到下拉列表中?
【发布时间】:2010-10-12 19:07:58
【问题描述】:

我有一个 Person 类型的数组

Person[] Traders = GetTraders();

Person 类包含名字、姓氏等数据对象。

我想将所有名字添加到下拉列表中。我怎样才能做到这一点?我试过这样做,但它不会得到名字:

ddl_traders.DataSource = traders;

编辑

Person 具有以下字符串字段:FirstName、LastName、login。

我希望下拉列表显示名字,但值必须是登录名。我相当肯定这是可能的,尽管我不知道如何做到这一点。有什么建议吗?

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

    这可能不是最好的方法,但您可以指定要显示的字段,如下所示:

        ddl_traders.DateSource = traders;
        ddl_traders.DataTextField = "FirstName";
        ddl_traders.DateValueField= "login";
        ddl_traders.DataBind();
    

    这允许您绑定完整的 Person 对象,但只显示名称,并将登录名保留为值。

    【讨论】:

    • 我正在尝试尝试您的解决方案,但遇到了愚蠢的“影子副本”错误。一旦我解决了这个问题,我会尝试你的解决方案。不过还是谢谢。
    【解决方案2】:

    一种方式:

    ddl_traders.DataSource = GetTraders().OfType<Person>().Select<Person, string>(p => p.FirstName).ToList<string>();
    

    这取决于 Person 有一个名为 FirstName 的字符串字段。

    【讨论】:

    • Person 确实有一个名为 FirstName 的字符串字段。我试试看。
    • PS - 我对问题进行了编辑。你知道怎么做吗?
    • 尝试了您的解决方案。出现此错误:错误 1“System.Array”不包含“Select”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“Select”(您是否缺少 using 指令或程序集参考?)
    • @xbonez 关于您的编辑,@patttertj 基本上是正确的。您可以将 DataTextField 和 DataValueField 指定为字符串,而您的 DataSource 可能只获取 GetTraders()。然后,您将调用 DataBind(),就像我之前展示的方法一样。
    猜你喜欢
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2013-09-03
    • 2012-08-02
    • 2020-03-09
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多