【问题标题】:Linq To Sql ComboBox (DropDownList) Setting Default BindingLinq To Sql ComboBox (DropDownList) 设置默认绑定
【发布时间】:2011-09-07 05:37:11
【问题描述】:

我们经常使用 Linq To Sql 设置简单的 winforms。我最近发现 ComboBox 控件在用作 DropDownList 时只会在单击时更新底层数据绑定。因此,如果您进入控件,请点击第一个字母以选择您的条目,然后退出。底层数据绑定永远不会获得新值。 Linq 将绑定属性默认设置为 ComboBox 控件的文本值。

解决此问题的方法是更改​​ linq 绑定值(感谢评论者 RedDog 指出这一点)。

所以我的问题是:从 Linq 拖动到 Sql 数据源时,如何设置 Visual Studio 以使 ComboBox 自动将 bindingsource 设置为 SelectedItem 而不是 Text?当然可以节省工作,但也可以防止错误找到客户。

【问题讨论】:

  • 你绑定的是 SelectedItem 还是 SelectedValue?
  • Linq 默认从数据源拖动字段时绑定到文本值。我已经尝试过了和 SelectedValue。两者都有效,但仅在使用鼠标单击时才有效。如果只使用击键,它永远不会返回数据库。
  • 好吧,显然我理解错了。我尝试绑定到 SelectedItem 并且成功了。所以,我将更新我的问题,如何让默认绑定到 SelectedItem 而不是 Text。

标签: winforms visual-studio-2010 linq-to-sql combobox


【解决方案1】:

因此,如上所述,我相信您已经通过绑定到 SelectedItem 并确保将 DataSourceUpdateMode 设置为 OnPropertyChanged 来解决它。

但是,对于改写后的问题,您会发现您无法更改 VS 的行为。您必须对绑定的内容做出选择。那里有一个DefaultPropertyAttribute at least some of the designer listens to 但我不知道它是否适用于绑定。

我要补充一点,在我们的应用程序中,我们使用帮助类在代码隐藏中手动添加所有绑定,而不是通过设计器。这给我们带来了许多好处,包括对我们所有绑定控件的常见行为“修复”。它还允许我们使用 LINQ 表达式来解析属性名称并确保绑定始终是数据源上的有效字段名称 - 如果通过设计器设置绑定然后删除架构中的字段,那么您将不知道问题直到运行时。

在组合框的情况下,我们的帮助类有解决方法:

  • 始终将DataSourceUpdateMode 设置为OnPropertyChanged
  • 如果绑定到 SelectedItem 或 SelectedValue:
    • 然后添加绑定Parse 事件处理程序,以在SelectedIndex 为-1 时将绑定值重置为绑定类型的默认值
    • 在添加绑定后更改组合框的数据源时,重置组合框的SelectedIndex(注意,由于某种原因绑定到SelectedValue时必须做更多特殊的事情)

【讨论】:

  • 优秀信息。我会考虑一切。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多