Tôi mới bắt đầu làm việc với một nhóm nhỏ các lập trình viên .NET cách đây một tháng và gần đây đã thảo luận với nhóm của chúng tôi về việc tại sao chúng tôi không sử dụng databinding trong mã của chúng tôi. Mỗi khi chúng ta làm việc với một lưới dữ liệu, chúng ta lặp qua một bảng dữ liệu và điền vào hàng lưới theo hàng; mã thường trông giống như sau:Khi nào tôi nên thận trọng khi sử dụng liên kết dữ liệu trong .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)'
đội dẫn chúng tôi được nói rằng ông đã bị đốt cháy sử dụng dữ liệu ràng buộc khi làm việc với các điều khiển Sheridan Lưới, VB6, và ADO recordset trở lại trong những năm chín mươi. Anh ta không chắc vấn đề chính xác là gì, nhưng anh ta nhớ rằng ràng buộc không hoạt động như mong đợi và gây ra cho anh ta một số vấn đề lớn. Kể từ đó, họ đã không tin tưởng ràng buộc dữ liệu và tải dữ liệu cho tất cả các điều khiển của họ bằng tay.
Lý do cuộc hội thoại thậm chí còn xuất hiện là vì tôi thấy dữ liệu ràng buộc rất đơn giản và thực sự thích tách dữ liệu trình bày (trong trường hợp này là lưới dữ liệu) từ nguồn dữ liệu trong bộ nhớ (trong trường hợp này, bảng dữ liệu). "Đang tải" hàng dữ liệu theo hàng vào lưới dường như phá vỡ sự khác biệt này. Tôi cũng quan sát thấy rằng với sự ra đời của XAML trong WPF và Silverlight, ràng buộc dữ liệu có vẻ giống như một-phải có để có thể làm sạch mã XAML của một nhà thiết kế với dữ liệu của bạn.
Khi nào tôi nên thận trọng khi sử dụng liên kết dữ liệu trong .NET?
Gắn kết trong .Net là _completely_ khác với databinding trong VB6. – SLaks
@SLaks Tôi tưởng tượng như vậy. Bạn có biết bất kỳ tài liệu tham khảo tốt mà tôi có thể đọc mà làm cho trường hợp đó rõ ràng? –
đoạn mã này trông lỗi thời trong ít nhất 10 năm. – Andrey