2011-01-20 116 views
2

我有一个表库存(ItemId,Name,Size,Price,otherinfo)其中ItemId是主键,Name,Size,Price是唯一的。
当我用名称绑定组合框时,所有重复名称都会出现,而我希望每个名称只出现一次,Size也会发生同样的情况。数据绑定组合框中不同的值组合框

如何加载绑定到数据源的组合框中的唯一值?

+0

如果你想它绑定到唯一的名称,那么你就不能绑定到ITEMID 。据我所知你可以有像ID = 1,名称= A; ID = 2,Name = A,这意味着这些记录已经是唯一的,因为它们的密钥是不同的。如果您只绑定到名称,您如何知道用户是否从ID 1或ID 2中选择了名称A?我希望这是有道理的。 – Divi 2011-01-20 23:30:33

+0

是的,我想绑定到名称。我还有两个大小和价格的组合框。因此,如果用户选择篮子大,20将返回一个唯一的ItemId。 – SMUsamaShah 2011-01-20 23:33:49

回答

7

你可以这样做,(你可能不得不调整它有点complie并为你工作)

ddlName.DataSource = items.Select(item=>item.Name).Distinct().ToList(); 
ddlName.DataBind(); 

ddlSize.DataSource = items.Select(item=>item.Size).Distinct().ToList(); 
ddlSize.DataBind(); 

ddlPrice.DataSource = items.Select(item=>item.Price).Distinct().ToList(); 
ddlPrice.DataBind(); 

,然后找到基于三个下拉列表中选择条目标识。

这是C#并假设你有LINQ

希望这有助于。

Edit--(如果没有LINQ)

IList<string> names = new List<string>(); 

foreach (Item item in Items) 
    if (!names.Contains(item.Name)) 
     names.Add(name); 

ddlName.DataSource = names; 
ddlName.DataBind(); 

//Do similar for price and size. 

编辑(使用SQL命令)

select distinct Name from Item 
select distinct Size from Item 
select distinct Price from Item