我在一个月前刚刚开始研究.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中的数据绑定?
答案 0 :(得分:7)
使用您完全不了解的任何时,您应该小心谨慎。
我承认不会很好地理解数据绑定,但我仍然认为你的团队领导的立场有点极端和反动。
我的经验法则是;在你明白之前不要依赖某些东西。一旦你理解了它,你就不需要我(或其他任何人)的经验法则。
:)
与使用数据绑定的警告相关的一些链接:
答案 1 :(得分:3)
如果您所做的只是显示数据,我认为没有理由不使用数据绑定。
我也来自VB6世界,数据绑定我们一次又一次,所以我们有标准和解决方法,以便不使用它。
输入.NET,数据绑定就像您需要的那样灵活。我已经非常欣赏现在绑定的力量。
您通过拒绝内置功能编写了许多不必要的代码。
您甚至可以将屏幕上的对象(如文本框)绑定到类中的属性。 查看此链接以获取winforms数据绑定的概述。 http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx
答案 2 :(得分:2)
http://www.knowdotnet.com/articles/differences.html
在.Net中,事情发生了巨大变化
Data Binding vs Manual Population
由于某些性能原因,VB6程序员远离ADO数据控件和绑定控件。我正在向VB.NET迈进,感觉绑定控件毕竟不是那么邪恶。
答案 3 :(得分:1)
与其他所有内容一样,您可以正确使用它,也可以不正确地使用它。 DataBinding有时会非常强大,但如前所述,您必须知道如何正确使用它。
通常,.NET(及其工具)中有两种类型的绑定:自动和手动。 自动绑定是指VS为您创建所有内容并进行拖放操作。不要这样做。 EVER。唯一的例外是VS2010中Silverlight 4的这些新增功能。它是唯一正确完成的自动绑定。
另一方面,使用DataSet作为工作单元,CurrencyManagers和其他东西的手动数据绑定非常有用(在这里讨论.NET 2.0 WinForms,对吧?)。