繁体   English   中英

从强类型列表中填充DropDownlist

[英]Populating a DropDownlist From a Strongly Typed List

我从一个强类型的列表中填充了一个DropDownList ,并且工作正常。问题是我想先连接列表中的两个字段,然后将它们放在下拉列表中,即FirstName + LastName。尝试了一些没有成功的事情,所以有人可以给这个新手一点帮助。

这是我在做什么的一个例子。

private List<Customer> _CustomerList = new List<Customer>();

ddlCustomer.DataSource = _CustomerList;
ddlCustomer.DataTextField = "FirstName";
ddlCustomer.DataValueField = "CustomerKey";
ddlCustomer.DataBind();

这行得通,但是我需要首先和最后一起使用,并且我无法Customer对象中处理该数据。

尝试使用动态创建的匿名对象的枚举。

var _CustomerList = customers.Select( c => new {
                                         Name = c.FirstName + " " + c.LastName,
                                         Key = c.CustomerKey
                                    });


ddlCustomer.DataSource = _CustomerList;
ddlCustomer.DataTextField = "Name";
ddlCustomer.DataValueField = "Key";
ddlCustomer.DataBind();

您可能必须在Select之后添加ToList(),但是我认为您可以绑定到IEnumerable<T>

PS此示例需要.Net 3.5框架

您可以在Customer类中创建一个将FirstName和LastName连接在一起的属性,并且可以在ddlCustomer.DataTextField中使用该属性。

我尚未找到解决此问题的好方法。 我发现以下方法可以最好地发挥作用:

  • 创建围绕Customer的包装器类(如果可能,从Customer继承,或创建一个包含Customer对象并公开其他属性的全新类。

  • 在NEW类中创建一个属性,该属性将您希望数据绑定的两个字段连接在一起。

  • 将下拉列表绑定到您的自定义对象的列表。

要从基础数据对象中分离出UI表示形式,可以围绕Customer创建一个包装对象,例如CustomerForUI,具有一个名为FullName的单个属性-然后将一个CustomerForUI对象列表放入UI中。

就像是:

public class CustomerForUI
{
    private string _FullName;

    public CustomerForUI(Customer c)
    {
       _FullName = c.FirstName + " " + c.LastName;
    }

    public string FullName
    {
       get {return _FullName;}
    }

    public string CustomerKey
    {  ... }
}

并构造一个名为_UIList的CustomerForUI对象的列表,并:

ddlCustomer.DataSource = __UIList;
ddlCustomer.DataTextField = "FullName";
ddlCustomer.DataValueField = "CustomerKey";
ddlCustomer.DataBind();

有没有原因导致您无法手动建立下拉列表中的列表项? 由于您已经在代码中进行此操作,所以我不明白为什么不这样做。

只需枚举您的业务对象,并使用:

ddlCustomer.Items.Add(new ListItem("text" , "value"));

其中text是串联在一起的名字和姓氏。

我同意ScottE ...这似乎是最简单的方法,并且要减少一个对象。

C# 强类型ConfigurationBuilder列表<object>从应用设置<div id="text_translate"><p>真的在为这个苦苦挣扎——它应该这么难吗?!</p><p> 我的 appsettings 中有一个简单的 object 数组:</p><pre> "AppSettings": { "Names": [ { "Id": "1", "Name": "Mike" }, { "Id": "2", "Name": "John" } ] }</pre><p> 然后我有一个 class</p><pre> public class AppSettings { public List&lt;Names&gt; Names { get; set; } = new List&lt;Names&gt;(); } public class Names { public string Id { get; set; } public string Name { get; set; } }</pre><p> 我在我的应用设置中读到:</p><pre> var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build(); var config = new AppSettings();</pre><p> 这就是出错的地方:</p><pre> config.Names = configuration.GetSection("AppSettings:Names") //&lt;&lt;&lt;&lt; what do I do here?</pre><p> 似乎它都与IConfigurationSection相关,这没有帮助。</p></div></object>

[英]C# strongly typed ConfigurationBuilder List<object> from appsettings

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在实体查询的强类型LINQ中填充列表 从强类型视图发回 DropDownList 从列表填充剃须刀下拉列表 <object> 在MVC中 从视图返回填充列表的强类型列表? 似乎无法从数组反序列化为强类型列表对象 C# 强类型ConfigurationBuilder列表<object>从应用设置<div id="text_translate"><p>真的在为这个苦苦挣扎——它应该这么难吗?!</p><p> 我的 appsettings 中有一个简单的 object 数组:</p><pre> "AppSettings": { "Names": [ { "Id": "1", "Name": "Mike" }, { "Id": "2", "Name": "John" } ] }</pre><p> 然后我有一个 class</p><pre> public class AppSettings { public List&lt;Names&gt; Names { get; set; } = new List&lt;Names&gt;(); } public class Names { public string Id { get; set; } public string Name { get; set; } }</pre><p> 我在我的应用设置中读到:</p><pre> var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build(); var config = new AppSettings();</pre><p> 这就是出错的地方:</p><pre> config.Names = configuration.GetSection("AppSettings:Names") //&lt;&lt;&lt;&lt; what do I do here?</pre><p> 似乎它都与IConfigurationSection相关,这没有帮助。</p></div></object> 将强类型列表添加到数据库 强类型List.GroupBy() 将强类型列表公开? Linq强类型嵌套列表
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM