C#獲取DataGridView數據源DataSource類型

在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的數據源類型,您可以根據其修改成符合自己需求的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章