【问题标题】:Problem Binding WinForms CheckBox To SubSonic DAL Boolean将 WinForms 复选框绑定到 SubSonic DAL 布尔值的问题
【发布时间】:2009-06-16 12:53:11
【问题描述】:

我正在尝试将 SubSonic 2.1 生成的 DAL 对象绑定到 WinForm (VB.NET VS2005)。为了解决缺少 IPropertyNotifyChanged 实现的问题,在我的绑定方法中,我在我要绑定的每个控件的 controlname.DataBindings.Add() 之前执行 controlname.DataBindings.Clear()。

文本框可以很好地处理这样的代码(ioBLL 是对我的 BLL 对象的引用,ioDAL 是对其中的 DAL 属性的引用):

txtCountryName.DataBindings.Add(New Binding("Text", ioBLL.ioDAL, namespace.Country.Schema.Columns.GetColumn("CountryName").ToString, True, DataSourceUpdateMode.OnPropertyChanged))

但是当绑定到一个复选框时

chkObsolete.DataBindings.Add(New Binding("Checked", ioBLL.ioDAL, namespace.Country.Schema.Columns.GetColumn("Obsolete").ToString, True, DataSourceUpdateMode.OnPropertyChanged))

当底层属性值为 True 时,它​​永远不会在运行时出现勾选。

有什么想法吗?

【问题讨论】:

    标签: winforms subsonic


    【解决方案1】:

    ioBLL.ioDAL.Obsolete 是布尔值吗?

    我使用非常相似的代码没有问题。

    也许唯一的区别是我使用了 BindingSource。

    IE 我在表单上使用绑定源并将其 DataSource 设置为 ioBLL。

    我在将控件直接绑定到我的实体时遇到了其他问题,但我不记得您描述为其中之一的问题。

    【讨论】:

    • 感谢您的 cmets。是的,它是一个布尔值。由于我写了这篇文章,我想知道这是否是 SubSonic 的一个实例,它在 VB.NET 上的工作效果不如 C#,所以我硬着头皮用 C# DAL 创建了一个新的解决方案。这表现得很好,所以我然后用 VB.NET 重新创建了 DAL,它也很有效!必须假设我的原始表单或 BLL 有问题...对使用 BindingSource 的 cmets 感兴趣。您是否还在 BLL 中创建所有属性并从 DAL 中填充它们,或者像我一样直接绑定到 DAL 属性?
    • 我的 GUI 调用 BLL 方法来获取、保存等。BLL 反过来调用 Mapper 方法,这些方法使用对 Subsonic DAL 的调用填充我自己的实体类型。我的 GUI 对 Subsonic DAL 一无所知,只处理我自己的实体类型和偶尔的 DataTables。像这样:GUI.bsCustomer.DataSource = BLL.CustomerBO.Fetch(New CustomerQuery().CustomerId.IsEqualTo(1001))
    • 感谢您的解释。如果我理解正确,您是绑定到 BLL.FieldName(并在 BLL 级别和 DAL 级别为每个字段保存属性),而不是我填充到 BLL.DAL.FieldName 的方式?
    • 是的!事实上,我的实体基类是由代码生成器使用(在本例中为 Subsonic)DAL dll 构建的。
    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多