datagridview 数据库绑定,datagridview数据绑定列

datagridview 数据库绑定,datagridview数据绑定列,详解DataGridView控件的数据绑定

本文详细讲解了DataGridView控件的数据绑定,并通过示例代码详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

目录

一、未绑定模式二。绑定模式示例程序:1。界面设计如下图所示:2。代码实现如下:使用DataGridView控件,可以显示和编辑来自许多不同类型数据源的表数据。

将数据绑定到DataGridView控件非常简单直观。在大多数情况下,您只需要设置DataSource属性。当绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串。

一、非绑定模式

所谓未绑定模式,是指DataGridView控件显示的数据不是来自绑定的数据源,而是可以通过代码手动填充到DataGridView控件中,这给DataGridView控件增加了很大的灵活性。让我们来看看DataGridView控件。列有很多种类型,这些类型都是间接或直接从DataGridViewColumns继承而来的。以下是我们经常使用的一些类型:

解释类DataGridViewTextBoxColumn与基于文本的值一起使用,并在绑定到数值和字符串类型的值时自动生成DataGridViewCheckBoxColumn。它与布尔值和checkState值一起使用。绑定到这些类型的值用于显示图像时自动生成DataGridViewImageColumn,绑定到字节数组、图像对象或图标对象用于显示单元格中的按钮时自动生成DataGridViewButtonColumn,绑定时不会自动生成。通常用作未绑定列,DataGridViewComboBoxColumn用户在单元格中显示下拉列表,这些列表不是在绑定时自动生成的。通常,需要手动进行数据绑定。DataGridViewLinkColumn用于显示单元格中的超链接,这些超链接不是在绑定时自动生成的。通常,需要手动进行数据绑定。

二、绑定模式

是将现有数据绑定到DataGridView控件。将数据绑定到DataGridView控件非常简单直观。在大多数情况下,您只需要设置DataSource属性。当绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串。

DataGridView控件支持标准的Windows窗体数据绑定模型,因此它将绑定到下表中描述的类的实例:

1.任何实现IList接口的类,包括一维数组。2.实现IListSource接口的任何类,如DataTable和DataSet。3.任何实现IBindingList接口的类,比如BindingList(Of T)类。4.任何实现IBindingListView接口的类,如BindingSource类。

通常绑定到BindingSource组件,并将BindingSource组件绑定到其他数据源或用业务对象填充组件。绑定组件是首选数据源,因为它可以绑定到各种数据源,并自动解决许多数据绑定问题。

DataGridView绑定数据源的几种方式:

第一种类型:

数据集ds=新数据集();

this . datagridview 1 . data source=ds。表[0];

第二种类型:

DataTable dt=new DataTable();

this . datagridview 1 . data source=dt;

第三种类型:

数据集ds=新数据集();

this . datagridview 1 . data source=ds . tables[ table name ];

第四种:

数据集ds=新数据集();

this . datagridview 1 . data source=ds;

这个;datagridview1datamember=表名;//必须设置DataMember属性,以指定要绑定到数据集中的哪个表。

第五种类型:

ArrayList al=new ArrayList();

this . datagridview 1 . data source=al;

第六种:

Dictionarystring,string dict=new Dictionarystring,string();

this . datagridview 1 . data source=dict;

第七:可以排序。

DataView dv=new DataView();

this . datagridview 1 . data source=dv;

示例程序:

在下面的程序中,演示上述各种绑定方法。

1、界面设计如下图:2、代码实现如下:

使用系统;

使用系统。集合。泛型;

使用系统。组件模型;

使用系统。数据;

使用系统。绘图;

使用系统。Linq

使用系统。文本;

使用系统。线程。任务;

使用系统。Windows . Forms

使用系统。配置;

使用系统数据。SqlClient

命名空间DataGridViewDataBinding

{

公共分部类格式:表单

{

公共弗曼()

{

初始化组件();

}

///摘要

///非绑定模式

////摘要

///param name=sender/param

///param name=e/param

私有void btn_NotBinding_Click(对象发送方,EventArgs e)

{

InitDgvByCustom();

}

///摘要

///通过自定义列的方式初始化数据网格视图

////摘要

私有void InitDgvByCustom()

{

//创建列

InitDgvTextBoxColumn(this。DataGridViewContentAlignment .中间中心,用户ID ,用户编号,20,真,真);

InitDgvTextBoxColumn(this。DataGridViewContentAlignment .“中间地带,”用户名,用户名,20,假,真);

InitDgvCheckBoxColumn(this。DataGridViewContentAlignment .中间地带,性,性别,假,真);

//创建行

datagridview row dr row 1=new datagridview row();

第一行.创建单元格(这个。dgv _ Demo);

//设置单元格的值

第一行.单元格[0]。值=1;

第一行.单元格[1]。值=测试;

第一行.单元格[2]。值=真;

//将新创建的行添加到数据网格视图中

this.dgv_Demo .行。添加(dr第1行);

//设置数据网格视图的属性

this.dgv_Demo .allowusertoadrows=false//不自动产生最后的新行

}

///摘要

///创建数据网格视图的文本框列

////摘要

///param name=dgv 要创建列的DataGridView/参数

///param name=_alignmeng 设置列的对齐方式/param

///param name=_columnName 列名/param

///param name=_headerText 显示的标题名/param

///param name=_maxInputLength 可输入的最大长度/param

///param name=_readOnly 设置列是否只读真实的只读错误的读写/param

///param name=_visible 设置列是否可见真实的可见错误的不可见/param

private void InitDgvTextBoxColumn(DataGridView dgv,DataGridViewContentAlignment _ alignmeng,

string _columnName,string _headerText,int _maxInputLength,bool _readOnly,bool _visible)

{

//实例化一个DataGridViewTextBoxColumn列

DataGridViewTextBoxColumn TBC=new DataGridViewTextBoxColumn();

//设置对齐方式

待定标题单元格。风格。alignment=_ alignment

//设置列名

待定. Name=_ columnName

//设置标题

待定HeaderText=_ headerText。

//设置最大输入长度

待定MaxInputLength=_ MaxInputLength;

//设置是否只读

待定ReadOnly=_ readOnly

//设置是否可见

待定。可见光=_可见

//将创建的列添加到数据网格视图中

dgv .列。添加(待定);

}

///摘要

///创建数据网格视图的检验盒列

////摘要

///param name=dgv 要创建列的DataGridView/参数

///param name=_alignmeng 设置列的对齐方式/param

///param name=_columnName 列名/param

///param name=_headerText 显示的标题名/param

///param name=_readOnly 设置列是否只读真实的只读错误的读写/param

///param name=_visible 设置列是否可见真实的可见错误的不可见/param

private void InitDgvCheckBoxColumn(DataGridView dgv,DataGridViewContentAlignment _ alignmeng,

string _columnName,string _headerText,bool _readOnly,bool _visible)

{

//实例化一个DataGridViewTextBoxColumn列

DataGridViewCheckBoxColumn CBC=new DataGridViewCheckBoxColumn();

//设置对齐方式

全血细胞计数标题单元格。风格。alignment=_ alignment

//设置列名

全血细胞计数. Name=_ columnName

//设置标题

全血细胞计数HeaderText=_ headerText。

//设置是否默认选中

//cbc .选定的=_选定的。等于(男) ?真:假;

//设置是否只读

全血细胞计数ReadOnly=_ readOnly

//设置是否可见

全血细胞计数。可见光=_可见

//将创建的列添加到数据网格视图中

dgv .列。添加(CBC);

}

///摘要

///绑定模式

////摘要

///param name=sender/param

///param name=e/param

私有void btn_Binding_Click(对象发送方,EventArgs e)

{

InitDgvByBinding();

}

///摘要

///通过数据绑定的方式初始化数据网格视图

////摘要

私有void InitDgvByBinding()

{

#地区绑定单一数据源

string strSQL= select * from users ;

//设置数据源

DataTable dt source=get DataTable(strSQL);

//直接绑定到表

//this.dgv_Demo .数据源=数据源

//绑定到数据视图

DataView dv=dtSource .默认视图

//按照密码字段降序排序

dv .排序=密码desc ;

this.dgv_Demo .数据源=dv

#结束区域

////不自动产生最后的新行

this.dgv_Demo .AllowUserToAddRows=false

}

///摘要

///都市数据库数据

////摘要

///param name=strSQL/param

///返回/返回

私有数据表GetDataTable(字符串strSQL)

{

DataTable dt dgv=new DataTable();

//dtDgv .TableName=

string strConn=配置管理器.ConnectionStrings[DbConn].连接字符串

SqlConnection conn=new SqlConnection(strConn);

SqlCommand cmd=new SqlCommand(strSQL,conn);

sqldata适配器adapter=新的sqldata适配器(cmd);

尝试

{

conn . Open();

适配器. fill(dtd gv);

}

接住(例外ex)

{ }

最后

{

conn . Close();

}

返回dtDgv

}

私有数据集GetDataSet()

{

DataSet ds dgv=new DataSet();

//第一张表

string strFirstSQL= select * from users ;

DataTable dt first=get DataTable(strFirstSQL);

//设置表名

dtFirst .TableName= UsersTable

//将表添加到资料组中

dsDgv .桌子。Add(dt优先);

//第二张表

string strSecondSQL= select * from grade ;

DataTable dt second=get DataTable(strSecondSQL);

//设置表名

dt秒.TableName= GradeTable

//将表添加到资料组中

dsDgv .桌子。Add(dt秒);

返回dsDgv

}

///摘要

///绑定到第一张表

////摘要

///param name=sender/param

///param name=e/param

私有void btn_BindingFirst_Click(对象发送方,EventArgs e)

{

//清空数据网格视图

this.dgv_Demo .数据源=空

//获取数据集

DataSet ds数据源=get DataSet();

#地区方式一

this.dgv_Demo .DataSource=dsDataSource

//必须设置数据成员属性,指定绑定到资料组的哪张表

this.dgv_Demo .数据成员=用户表

#结束区域

#地区方式二

//this.dgv_Demo .数据源=dsDataSource .表[0];

#结束区域

#地区方式三

//this.dgv_Demo .数据源=dsDataSource .表[ user stable ];

#结束区域

}

///摘要

///绑定到第二张表

////摘要

///param name=sender/param

///param name=e/param

私有void BTN _绑定秒_点击(对象发送方,EventArgs e)

{

//清空数据网格视图

this.dgv_Demo .数据源=空

//获取数据集

DataSet ds数据源=get DataSet();

#地区方式一

this.dgv_Demo .DataSource=dsDataSource

//必须设置数据成员属性,指定绑定到资料组的哪张表

this.dgv_Demo .DataMember= GradeTable

#结束区域

#地区方式二

//this.dgv_Demo .数据源=dsDataSource .表[0];

#结束区域

#地区方式三

//this.dgv_Demo .数据源=dsDataSource .表格[等级表];

#结束区域

}

///摘要

///绑定到字典

////摘要

///param name=sender/param

///param name=e/param

私有void BTN _绑定字典_点击(对象发送方,EventArgs e)

{

Dictionaryint,string dict数据源=新字典int,string();

字典数据源。添加(1,"计算机系);

字典数据源。添加(2,"外语系);

字典数据源。添加(3,"数学系);

字典数据源。添加(4,"中文系);

DataGridViewTextBoxColumn TBC key=new DataGridViewTextBoxColumn();

tbcKey .HeaderText=健;

//设置要绑定到的字段

tbcKey .DataPropertyName= Key

this.dgv_Demo .列。add(tbcKey);

DataGridViewTextBoxColumn TBC value=new DataGridViewTextBoxColumn();

波音公司值. HeaderText=值;

//设置要绑定到的字段

波音公司值DataPropertyName= Value

this.dgv_Demo .列。添加(待定值);

//设置数据源方式一:字典转换成数组

//this.dgv_Demo .数据源=dictDataSource .to array();

//设置数据源方式二:字典转换成集合

//this.dgv_Demo .数据源=dictDataSource .to list();

//设置数据源方式三

//this.dgv_Demo .数据源=(来自字典数据源中的p

//选择新的

//{

//Key=p.Key,

//值=p。值

//}).to list();

//设置数据源方式四

this.dgv_Demo .数据源=(来自字典数据源中的p

选择新建

{

Key=p.Key,

价值=p。价值

}).to array();

}

}

}

到此这篇关于数据网格视图控件数据绑定的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

datagridview 数据库绑定,datagridview数据绑定列