我對理解BindingSource的行爲有些困難。 讓我們來看看下面的例子:具有相同DataSource屬性的兩個BindingSource對象
創建表
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Rows.Add(new object[] { 0 });
dt.Rows.Add(new object[] { 1 });
dt.Rows.Add(new object[] { 2 });
dt.Rows.Add(new object[] { 3 });
創建兩個BindingSource的具有相同的DataSource屬性對象
BindingSource bs1 = new BindingSource();
BindingSource bs2 = new BindingSource();
bs1.DataSource = dt;
bs2.DataSource = dt;
在這一點上,我認爲,創建的BindingSource是完全獨立的。但事實並非如此。 改變bs1
Filter
屬性後:的兩者的BindingSource對象底層數據視圖(的BindingSource
List
屬性)的
`bs1.Filter = "id >= 2";`
Filter
的bs2
屬性不發生變化,但RowFilter
性質改變。
事實證明,這兩種BindingSource
對象具有數據視圖的完全相同實例即條件bs1.List == bs2.List
是true
。
我的問題是爲什麼他們共享相同的列表,以及如何改變這種行爲?
編輯: 我找到了解釋爲什麼他們共享相同的列表? - 似乎列表分配從DataTable
的DefaultView
財產(因此bs1.List == bs2.List
,bs1.List == dt.DefaultView
都是正確的)。
不,我需要將它們指向相同的'DataTable'對象。現在我找到了答案。將很快發佈。謝謝。 – Ruben
我期待着看到。 – impyre
http://stackoverflow.com/a/11280789/1262928 – Ruben