【问题标题】:When should I be cautious using data binding in .NET?什么时候应该谨慎使用 .NET 中的数据绑定?
【发布时间】:2011-02-07 15:52:02
【问题描述】:

大约一个月前,我刚开始在一个小型 .NET 程序员团队工作,最近与我们的团队负责人讨论了为什么我们在代码中根本不使用数据绑定。每次使用数据网格时,我们都会遍历数据表并逐行填充网格;代码通常看起来像这样:

Dim dt as DataTable = FuncLib.GetData("spGetTheData ...")
Dim i As Integer

For i = 0 To dt.Rows.Length - 1 '(not sure why we do not use a for each here)'
  gridRow = grid.Rows.Add()
  gridRow(constantProductID).Value = dt("ProductID").Value
  gridRow(constantProductDesc).Value = dt("ProductDescription").Value
Next

'(I am probably missing something in the code, but that is basically it)'

我们的团队负责人说,他在九十年代使用 Sheridan Grid 控件、VB6 和 ADO 记录集时被数据绑定烫伤了。他不确定确切的问题是什么,但他记得绑定没有按预期工作,并给他带来了一些重大问题。从那时起,他们就不再信任数据绑定,而是手动加载所有控件的数据。

之所以会出现这种对话,是因为我发现数据绑定非常简单,并且非常喜欢将数据表示(在本例中为数据网格)与内存数据源(在本例中为数据桌子)。将数据逐行“加载”到网格中似乎打破了这种区别。我还观察到,随着 WPF 和 Silverlight 中 XAML 的出现,数据绑定似乎成为必须具备的条件,以便能够将设计人员的 XAML 代码与您的数据干净地关联起来。

什么时候应该谨慎使用 .NET 中的数据绑定?

【问题讨论】:

  • .Net 中的数据绑定与 VB6 中的数据绑定完全不同。
  • @SLaks 我想是的。你知道我能读到哪些很好的参考资料来明确说明这种情况吗?
  • 这段代码看起来已经过时了至少 10 年。
  • @Andrey 代码可能已经过时了大约 10 年。据我了解,5 年前,所有精通 VB6 的开发人员的任务是在大约 5 周内推出一个成熟的 .NET 应用程序。因此,您会看到很多 VB.NET 代码看起来像是被黑的 VB6 代码。它有效,但肯定不漂亮。

标签: .net vb.net winforms data-binding


【解决方案1】:

如果您所做的只是显示数据,在我看来,没有理由不使用数据绑定。

我也来自 VB6 世界,在那里数据绑定一次又一次地困扰着我们,所以我们有标准和解决方法以便不使用它。

进入 .NET,数据绑定可以随心所欲地灵活使用。我开始真正体会到绑定现在的力量了。

通过拒绝内置功能,您正在编写许多不必要的代码。

您甚至可以将屏幕上的对象(例如文本框)绑定到类中的属性。 查看此链接以获取有关 winforms 数据绑定的概述。 http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx

【讨论】:

  • @Jeremy 感谢您的意见和链接到 MSDN。我想这应该是一个明显的重点,但我什至没有考虑过。原来那里有大量的信息!
【解决方案2】:

http://www.knowdotnet.com/articles/differences.html

事情发生了巨大变化,在 .Net 中变得更好

Data Binding vs Manual Population

由于某些性能原因,VB6 程序员已经远离 ADO 数据控件和绑定控件。我正在向 VB.NET 迈进,并且感觉绑定控件毕竟不是那么邪恶。

【讨论】:

    【解决方案3】:

    当你使用任何你不完全理解的东西时,你应该小心。

    我承认我不太了解数据绑定,但我仍然认为您的团队负责人的立场有点极端和反动。

    我的经验法则是;在你理解它之前不要依赖它。一旦你理解了它,你就不需要我(或其他任何人)的经验法则。

    :)

    一些与使用数据绑定的警告相关的链接:

    http://travisgosselin.com/blog/?p=46

    Databinding in C# and .NET

    【讨论】:

    • 我完全同意。这就是为什么我想更好地了解数据绑定发生了什么。对我来说,我宁愿完全理解 .NET 中的数据绑定,然后然后选择不使用它而不是完全避免它。
    • 我不知道在使用它之前你需要完全理解一个结构(在这里插入汽车/发动机的类比)。但是您应该了解何时以及何时不使用它。
    • 我同意,您准确辨别何时以及何时不使用构造的能力取决于对构造的理解程度
    【解决方案4】:

    与其他所有内容一样,您可以正确使用它,也可以不正确地使用它。 DataBinding 有时会非常强大,但就像前面提到的,您必须知道如何正确使用它。

    通常,.NET(及其工具)中有两种类型的绑定:自动和手动。 自动绑定是 VS 为您创建所有内容,并且您可以拖放。不要这样做。曾经。唯一的例外是 VS2010 中 Silverlight 4 的这些新增功能。这是唯一正确完成的自动绑定。

    另一方面,使用 DataSets 作为工作单元、CurrencyManagers 和其他东西的手动数据绑定可能非常有用(在这里谈论 .NET 2.0 WinForms,对吗?)。

    【讨论】:

    • 是的,我们使用的是 .NET 2.0 WinForms。我想知道您是否可以扩展“手动数据绑定......和其他东西,可能非常有用”的意思。你能举个例子吗?那真的很有帮助。
    • 嗯,手动数据绑定是指使用 DataSource 和其他属性直接绑定到代码中的控件。看看这个:akadia.com/services/dotnet_databinding.html
    • 只是补充一下,如果你喜欢的话,你绑定到 DataTables 或自定义 POCO 对象都没有关系。无论哪种方式,绑定都有效。我多次使用它来构建非常酷的数据处理表单。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2011-09-03
    • 2011-01-11
    • 2017-01-26
    • 2015-04-30
    • 2023-04-02
    • 2011-04-15
    相关资源
    最近更新 更多