2010-04-13 48 views
5

我剛剛在一個月前開始在一個.NET程序員團隊工作,最近和我們的團隊負責人討論了爲什麼我們在代碼中根本不使用數據綁定。每次我們使用數據網格時,我們遍歷數據表並逐行填充網格;該代碼通常看起來是這樣的:什麼時候應該謹慎使用.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)' 

我們的團隊負責人是說,他得到了使用數據與謝里登網格控件,VB6工作時結合燒燬,ADO記錄集早在上個世紀九十年代。他不確定確切的問題是什麼,但他記得綁定沒有按預期工作,並導致他一些主要問題。從那時起,他們不再信任數據綁定,並手動爲其所有控件加載數據。

對話甚至出現的原因是因爲我發現數據綁定非常簡單,並且非常喜歡將數據表示(在本例中爲數據網格)從內存數據源(在這種情況下,數據表)。將數據逐行加載到網格中似乎破壞了這種區別。我還觀察到,隨着WPF和Silverlight中XAML的出現,爲了能夠將數據與設計器的XAML代碼完美連接起來,數據綁定似乎是必不可少的。

什麼時候應該謹慎使用.NET中的數據綁定?

+1

.NET中的數據綁定完全不同於VB6中的數據綁定。 – SLaks 2010-04-13 21:12:20

+0

@SLaks我是這麼想的。你知道任何可以明確說明的情況嗎? – 2010-04-13 21:13:20

+3

這段代碼看起來已經過時至少10年了。 – Andrey 2010-04-13 21:14:21

回答

3

如果你只是在顯示數據,在我看來,沒有理由不使用數據綁定。

我也來自VB6的世界,數據綁定一次又一次地咬住我們,所以我們有標準和解決方法,以便不使用它。

輸入.NET,其中數據綁定如您所需要的那樣靈活。我真的很欣賞現在綁定的力量。

您正在通過拒絕內置功能編寫大量不必要的代碼。

您甚至可以將屏幕上的對象(如文本框)綁定到類中的屬性。 查看此鏈接瞭解winforms數據綁定的概述。 http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx

+0

@Jeremy感謝您的輸入和鏈接到MSDN。我想這應該是一個明顯的問題,但我甚至都沒有考慮過。事實證明,那裏有豐富的信息! – 2010-04-14 18:19:14

7

您應該謹慎使用什麼你不完全理解。

我承認不太理解數據綁定,但我仍然認爲你的團隊領導的立場有點極端和反動。

我的經驗法則是;在你理解之前不要依賴某些東西。一旦你瞭解它,你不需要我的(或任何其他人)經驗法則。

:)

使用與一些注意事項和鏈接數據綁定:

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

Databinding in C# and .NET

+0

很好的建議:-) – 2010-04-13 21:17:01

+0

我完全同意。這就是爲什麼我想更好地理解數據綁定發生了什麼。對我而言,我寧願完全理解.NET中的數據綁定,然後*選擇不使用它,而不是完全避免它。 – 2010-04-13 21:17:23

+0

我不知道在使用它之前你需要完全理解一個構造(在這裏插入汽車/引擎類比)。但是你應該明白何時何時不使用它。 – BenV 2010-04-13 21:26:19

1

正如一切,你可以用它正確,或不正確。 DataBinding有時可能非常強大,但如前所述,您必須知道如何正確使用它。

通常,在.NET(及其工具)中有兩種類型的綁定:自動和手動。 自動綁定是當VS爲你創建一切,並且你拖放。不要這樣做。 EVER。唯一的例外是VS2010中Silverlight 4的新增功能。這是唯一正確完成的自動綁定。另一方面,使用DataSets作爲Works of Works,CurrencyManagers和其他東西的手工數據綁定可能是非常有用的(在此討論.NET 2.0 WinForms,對吧?)。

+0

是的,我們正在使用.NET 2.0 WinForms。我想知道你是否可以擴展「手工數據綁定」和其他內容的含義,可以非常有用。「你能舉一個例子嗎?這將非常有幫助。 – 2010-04-13 21:27:27

+0

那麼,通過手動數據綁定,我的意思是直接綁定到代碼中的控件,使用DataSource和其他屬性。檢查了這一點:http://www.akadia.com/services/dotnet_databinding.html – 2010-04-13 21:32:24

+0

只需要添加,你綁定到DataTables或自定義POCO對象並不重要,如果你更喜歡它們。綁定以任何方式工作。我多次使用它來構建非常酷的數據操作表單。 – 2010-04-13 21:33:50