【问题标题】:VS2010 SP1 Combobox displaymember issueVS2010 SP1 Combobox displaymember 问题
【发布时间】:2012-12-17 18:41:55
【问题描述】:

我在 VS 2010 和 C# 中遇到了 Combobox 的 Displaymember 问题。 我有一个表为 T1,父 ID 为 int 和一些其他信息,另一个表为 T2,id 为 int,名称为 varchar(50)。我想使用 T2 作为参考。 所以,我的组合框: 绑定 - T1 数据源 - T2 DisplayMember - T2.Name ValueMember - T2.Id

它不会起作用,我看不出我在哪里做错了。 另外,如果我这样做: DisplayMember - T2.Id ValueMember - T2.Id 比它开始工作。

谢谢

【问题讨论】:

  • 你能展示一个代码示例来演示这个问题吗?
  • 我没有为此添加任何代码。一切都在设计时设定。
  • 忘了说是WinForm
  • 你能分享你的代码你是如何填充你的combobox的吗?

标签: c# winforms visual-studio-2010 combobox


【解决方案1】:

如果我理解正确,您正在尝试将 DisplayMemberValueMember 属性设置为第二个表中存在的两个字段的名称。
DisplayMemberValueMember 是应该引用的字符串到绑定到 DataSource 属性的表中的字段。
如果您将数据源绑定到不包含为DisplayMemberValueMember 列出的字段的表,则没有任何东西可以按预期工作

如果您的表通过 ParentID 和 ID 字段相关,那么您可以使用 JOIN 表达式创建数据源

SELECT t1.ParentID, t1.Field1, t1.Field2, t2.ID, t2.Name
FROM t1 LEFT JOIN t2 on t1.ParentID = t2.ID

然后您可以设置组合框的 DisplayMember 和 ValueMember

combobox1.DisplayMember = "t2.Name";
combobox1.ValueMember = "t2.ID";

【讨论】:

  • 我做不到。我正在使用 2 个 SP 来获取数据。为什么如果我将 DisplayMember 更改为 T2.Id 它开始工作?
  • 好的,但是您绑定到组合框的数据源属性的模式是什么?用于显示和值的字符串应该是该架构中存在的列的名称。
  • 这是一个 SP2,它带来了 Id 和 Name 列(我称之为 T2)
  • 您能告诉我如何添加图片,以便自行解释吗?
  • 您不能以您的声誉编辑您的问题并发布指向共享服务的链接。 (photobucket.com、tinypic.com 等)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多