我想將業務對象列表綁定到Winforms控件(DataGridview,ComboBox,e.t.c)。WinForms:對象數據源使用最佳實踐
有幾種方法做到這一點:
我能爲業務對象創建包裝類和覆蓋其ToString
方法實現。這對ComboBox,ListBox Items.(Add|AddRange)
方法很有用。
但是這不適用於DataGridView。它要求ObjectDataSource在設計器模式下調整列。
由於應該有ObjectDataSources(用於DataGridViews)和包裝類,我決定只留下一種方法。 ObjectDataSource之一。
現在我有用於數據綁定的ObjectDataSources。當我使用嚮導時,它將屬性添加到我可以使用的窗體中,如下所示:
MyObjectDataSoure.DataSource = list-of-entities;
填充底層winforms控件。但我也可以將實體列表直接分配給控制的數據源屬性,並且人口也是相同的。
MyWinformsControl.DataSource = list-of-entities
是的,現在我沒有ObjectDataSource事件,但可能會有更一般的東西我想念?我應該避免聽winform事件(選擇已更改,用戶添加一行)並使用對象數據源?
什麼是使用對象數據源及其事件的最佳實踐?
預先感謝您!
謝謝你的迴應,妮可。我玩綁定來源,並有一個問題:是否有「beforeDelete」事件?我只能處理「afterDelete」。它看起來像綁定源提供了處理winControl - >底層數據源通信的一週能力。我想要有單一的方法來處理事件,但它看起來像bindingSources是不夠的。如果我使用DataGrid + listBox,我可以在dataGrid的bindingSource上處理刪除事件,但是必須在listBox上監聽「keyDowns」。 – 2010-09-25 04:26:44
對不起,但我不認爲我明白你最後一條評論的意思。 BindingSource作爲實際數據源與控件或控件綁定之間相對透明的中間層。除了在綁定時間定位它,你根本不需要與它進行交互。您應該能夠繼續完全按照您已經在做的方式執行刪除操作。 – 2010-09-27 12:10:29