【问题标题】:Distinct values in data bound combobox数据绑定组合框中的不同值
【发布时间】:2011-01-21 08:23:36
【问题描述】:

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

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

【问题讨论】:

  • 如果你想让它绑定到唯一的名字,那么你不能绑定到 itemID。据我了解,您可能拥有像 ID=1, Name=A; 这样的数据。 ID=2,Name=A,这意味着这些记录已经是唯一的,因为它们的键不同。如果你只绑定名字,你怎么知道用户是从 ID 1 还是 ID 2 中选择了 Name A?我希望这是有道理的。
  • 是的,我想绑定到名称。我还有另外两个用于大小和价格的组合框。因此,如果用户选择购物篮,大号,20,它将返回一个唯一的 ItemId。
  • 您有更好的建议吗?我希望用户选择名称、尺寸和价格并获得唯一的 itemId 作为结果

标签: c# data-binding distinct-values


【解决方案1】:

您可以这样做,(您可能需要稍微调整一下以符合您的要求并为您工作)

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();

然后根据三个下拉列表的选择找到itemID。

这是 C# 并假设您有 LINQ

希望这会有所帮助。

编辑--(如果没有 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

【讨论】:

  • 如果我没有 LINQ 怎么办?我正在.net 2.0中制作它。这段代码中的“项目”是什么?
  • 我有一个数据集和表格适配器来获取值或 sql 本身
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2012-01-24
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多