在C#的應用中,DataGridView控件應用比較廣泛,而其數據源也有多種。數據綁定一般歸於兩類:一類是簡單綁定,綁定至一個數據集中;另一類是所謂的復雜綁定,綁定至一個數據對象的列表。相關知識請參閱MSDN或網上其它文章。本文僅對綁定的數據源的類型進行判斷。
對於DataGridView的DataCource,通過指定BindingSource將源數據集來進行復雜綁定,簡單綁定是直接指定DataTable,DataSet,List<> 或 BingingList<>等,通過以下代碼進行判斷:
private void GetDGVType(DataGridView dgv) { if (dgv.DataSource == null) MessageBox.Show("DataGridView.DataSource is null"); else if (dgv.DataSource.GetType() == typeof(BindingSource)) { var bsSource = ((BindingSource)dgv.DataSource).DataSource; if (bsSource != null) TypeOfGdv(dgv, bsSource, true); } else TypeOfGdv(dgv, dgv.DataSource, false); } private void TypeOfGdv(DataGridView dgv, object dgvSource, bool isBindingSource) { string dgvSourceType = dgv.DataSource.GetType().Name; string dgvChildType = dgvSource.GetType().Name; string sMessage = "DataGridView.DataSource:"; sMessage += "\n" + "->".PadLeft(12) + "\t" + dgvSourceType; if (isBindingSource) { sMessage += "\n" + "->".PadLeft(12) + "\t" + dgvChildType; } if (dgvSource.GetType() == typeof(DataSet)) { sMessage += "\n" + "->".PadLeft(12) + "\t" + dgv.DataMember; } MessageBox.Show(sMessage); }
其中:TypeOfGdv()作用是列示DataGridView的數據源類型,您可以根據其修改成符合自己需求的代碼。