连接下拉列表中显示的两个字段

Loc*_*e12 15 c# drop-down-menu

我试图连接列表中的两个字段以显示在下拉列表中.下面是我想要使用的代码.我不想改变我的产品的模型,所以我试图做下面这样的事情,但是如果没有用连接的字段构建我自己的对象,我就无法解决任何问题.

            skuDropDown.DataSource = List<product>
            skuDropDown.DataTextField = "ProductId" // want to combine with"Description";
            skuDropDown.DataValueField = "ProductId";
            skuDropDown.DataBind();
Run Code Online (Sandbox Code Playgroud)

谢谢任何想法都会有帮助.

Ant*_*ram 28

要使用给定方法分配源,我将使用LINQ创建具有所需属性的匿名类型.就像是

List<Product> products = new List<Product>();
products.Add(new Product() { ProductId = 1, Description = "Foo" });
products.Add(new Product() { ProductId = 2, Description = "Bar" });

var productQuery = products.Select(p => new { ProductId = p.ProductId, DisplayText = p.ProductId.ToString() + " " + p.Description });

skuDropDown.DataSource = productQuery;
skuDropDown.DataValueField = "ProductId";
skuDropDown.DataTextField = "DisplayText";
skuDropDown.DataBind();
Run Code Online (Sandbox Code Playgroud)


Die*_*des 5

如果您有一个表示产品的类,只需创建一个扩展您的类并将其组合返回的属性,例如:

        public string ID_Description {
            get 
            {
               return string.Format("{0} ({1})", Name, ProductId);
            }
        }
Run Code Online (Sandbox Code Playgroud)

并且,在您的数据绑定下拉列表中引用您的属性

skuDropDown.DataSource = productQuery;     
skuDropDown.DataValueField = "ProductId";     
skuDropDown.DataTextField = "ID_Description";     
skuDropDown.DataBind(); 
Run Code Online (Sandbox Code Playgroud)