C#获取DataGridView数据源DataSource类型

C#动态添加DataGridView列和行 在WinForm的C#应用中,DataGridView作为重要的数据组织和显示控件,作用极大。在DataGridView的数据组织时,一般都采用数据源绑定的方式(DataSource)与DataSet、Datatable或List来组织,很少出现不使用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的数据源类型,您可以根据其修改成符合自己需求的代码。

C#面:DataGrid 的 DataSource 可以连接什么数据源 除了以上几种常见的数据源,还可以通过自定义数据源来连接其他类型的数据,只要实现了IEnumerable 接口或者继承自 IEnumerable 接口的集合类都可以作为DataGrid的数据源 阅读详情

相关推荐

C# 窗体应用 DataGridView 使用对象绑定数据源

C# 窗体应用 DataGridView 使用对象绑定数据源 前言 第一次发文,希望大家能够支持。???? 第一步 最近遇到一个项目,需要用到C# 窗体应用的DataGridView,遇到几个问题,写下来让大家成功避免踩雷 第一步,创建C#窗体文件,(会的同学自觉忽略,会创建的同学直接跳到第六步,不会的小新也不要紧哦) 第二步 第二步,会生成一个窗体视图(如下图) 第三步 选择视图,工具箱(左方有快捷方式的忽视) 第四步 找到DataGridView控件,拖到Form1里面 第五步 创建对象类

qq_46104786的博客 1万+

c# datagridviewDataSource的使用总结

由于当前项目的窗体更新使用的是订阅事件的方式。其中有个datagridview 动态显示统计数据的列表框。本来想用textbox显示,但不规则,看起来也不美观,改由dgv显示。 我没打算用改dgv表的方式更新表内数据,涉及到检索重复等相关的要求,比如第一个事件 把某个产品加入,第二个事件来之后如果是跟第一个事件产品一样,在这个产品数加1,若不一样则另起一行。每次事件都要检索对比一次,导...

weixin_34399060的博客 1万+

winform中的数据绑定

1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) {   SqlDataAdapter sda = new SqlDataAdapter("Select * From T_Cla...

weixin_30383279的博客 794

C#手动操作DataGridView之------使用各种数据源填充表格实例

DataGridView的操作,如何获取数据源DataSource,sqlite数据源绑定,如何手动编辑一个数据源DataTable,文本数据表格的导入,List作为数据源,BindingList作为数。据源,

河西~石头 1万+

winform定义数据源名称_C#数据源绑定DataSource以及相关控件(DataGridView)的使用总结...

我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridViewDataSource, DataTable等概念。下面我就我自己模糊的一些知识点串讲以下:1)首先我要讲的是一些控件:Control:控件基类,有一个DataBindings对象,它是一个ControlBindingCollection类,这个类继承与BindingsCollection,里面有一个Bindi...

weixin_39536806的博客 978

C# winforms DataGridView设置数据源自动显示表格

C# winforms DataGridView设置数据源自动显示表格

编程之道在明明德在亲民在止于至善 1409

C# Winform DataGridView

从上面的动图可以看到,在 DataGridView 绑定空的 List 后,给 List 添加数据,包括给 DataGridView 刷新表格,给 List 修改数据,都没有效果,DataGridView 界面没有任何变化。在添加数据后,在绑定 DataGridView 确实能显示对应的数据,但是在绑定后,如果再次添加其他数据,也会和上节一样,不会再有其他的变化,即使刷新表单也是一样。源的几种情况,在 List 的长度增加, DataGridView 刷新表格,并没有什么作用,那么要如何解决这个问题呢?

2301_76589851的博客 1594

C# Winform DataGridView的列顺序,在运行时/数据源绑定后被改变的问题

C# Winform DataGridView的列顺序,在运行时/数据源绑定后被改变的问题,这个问题对于需要控制列顺序的人来说,如果找不到原因,你就会发现一直都控制不了列的顺序。当然,你可能也有事件处理程序或者其它代码编程导致主动改变了列顺序,甚至你可能设置了独特的样式和主题导致的,但这种不是我们考虑的范围。我们要讲的是针对数据绑定影响了列的顺序的这个原因,没有人为去控制列顺序的程序下,数据源绑定后列就自动被改变了。这个问题的处理,需要用到列的DisplayIndex属性,该属性可以设定顺序。

C#开发 2462

关于C#DataGridView设置了DataSource后Rows无值问题

前言 今天写一个导出到Excel表的东西,以前也写过,之前导出都是将界面上的DataGridView中数据导出,没有任何问题,然而今天的导出场景是在界面是点击导出按钮,直接在数据库中查询符合条件的数据导出,不需要显示在界面上。 本文若有出入,请指正——来自小渣渣的颤抖 客官可移步小站查看本文http://fanjiajia.cn/2019/07/08/Cplusplus/flx1/ 实现及问...

weixin_30778805的博客 934

C# DataGridView用法(—)代码绑定数据源

C# DataGridView用法(—)未绑定数据源什么DataGridView控件代码绑定数据源一、数据库数据传递二、结果展示 什么DataGridView控件 DataGridView控件:英文意思就是数据表格视图,顾名思义可以简单理解为类似excel表格,提供直观视图。 官方解释:DataGridView控件,可以显示和编辑来自多种不同类型数据源的表格数据。 ①、将数据绑定到DataGridView控件非常简单和直观,一般只需要设置DataSource属性。在绑定到包含多个列表或表的数据源是,

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1713

C# DataGridView绑定数据源都有哪些方法?

开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) {   SqlDataAdapter sda = ...

被莫名羡慕的Cat的博客 2443

(转载)C#DataGridView 绑定List<T>做数据源的操作问题

C#DataGridView 绑定List<T>做数据源的操作问题 若想将 List<T>作为DataGridView数据源,然后后续还想继续操作的话,需要将List<T>赋值给BindingList对象, 然后直接将BindingList赋值给DataGridView.DataSource, 如此直接操作BindingList对象时,DataGrid...

david专栏 1万+

C# datagridview.DataSource 绑定List<T>数据源不显示

private List<Student> stuList = null; //..... //datagridview ,没有设定默认列 this.dgvStudentList.DataSource = this.stuList; //datagridview不显示 检查一下: 是不是AutoGenerateColumns属性设置为False了,但是DataGridView并没有设置默认列 ...

予非池物 3507

c# winform 添加dataGridView数据源

SqlConnection cnn;               //实例化sqlConnection对象               cnn = new SqlConnection("server=192.168.0.10 ;  uid = sa ; pwd = szjj1995;database=TEST_HY ;");               //打开sql           

深圳古先生的博客 2547

DataGridView类型和数据绑定

DataGridView包括DataGridViewTextBoxColumn(文本列 默认选择这个) DataGridViewComboBoxColumn DataGridViewLinkColumn ...

u012386475的博客 2196

c# dataGridView绑定string数组数据源

//我们需要包装一下数组,方法如下: //不想要列标题,可以设置去掉列标题 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; na

深圳古先生的博客 4766
上一篇: C#动态添加DataGridView列和行
下一篇: C#用Spire.Xls对Excel的页面进行自动列宽处理
老瓷
博客等级 码龄21年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值