Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader

摘要:
那就需要设置datagridview的items属性或者datagridview右侧箭头——编辑列除了设置HeaderText显示列名外,需要设置DataPropertyName属性必须对应表中的列。这块儿介绍一个列属性Frozen(冻结)的意思,即如果datagridview有滚动条出现,拉动滚动条时,冻结的列是不会动的,其他的列会跟随滚动条,上个图看看,当拉动滚动条时,住址栏已经隐藏起来了,而姓名栏是冻结列true2、使用IList类集合绑定我们在软件开发的过程中,有些数据查出来是IList,再转DataTable就比较麻烦了,那么能不能直接绑定IList尼?

前文介绍了Winform为DataGridView提供的数据自动绑定功能,下面介绍一下采用代码的数据绑定

1、用DataSet和DataTable为DataGridView提供数据源

先上代码

private void Form1_Load(objectsender, EventArgs e)
        {
            String strConn = "Data Source=210.26.*.*;Initial Catalog=Test;User ID=sa;Password=*****";  
            SqlConnection conn = newSqlConnection(strConn);
            String sqlId = "select * from [Student] "; 
            conn.Open(); SqlCommand cmd = newSqlCommand(sqlId, conn); 
            SqlDataAdapter da = newSqlDataAdapter(cmd); 
            DataSet ds = newDataSet();
            da.Fill(ds, "student");            //dataGridView1.DataSource=ds.Tables["Student"];此处直接用DataTalbe绑定,与下面两行代码的效果是一样的
            dataGridView1.DataSource = ds;//使用Dataset,单必须指定DataMember,因为DataSet是DataTable的集合,而datagridview只能绑定一个datatable
            dataGridView1.DataMember = "Student";           
            conn.Close(); 
        }

这里需要指出的是,如果不对dataGridview做任何设置,上面这段代码将自动将数据绑定到dataGridview上,效果图如下

Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader第1张

这样的显示不是很好,那么我只需要将姓名和住址显示出来怎么办?那就需要设置datagridview的items属性或者datagridview右侧箭头——编辑列

Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader第2张

除了设置HeaderText显示列名外,需要设置DataPropertyName属性必须对应表中的列。

那这样就可以了吗?NO,这样的话,如果继续运行上面的程序,会出现下图情况

Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader第3张

为什么会这样尼?明明只是指定了绑定两个列的,呵呵还需要在代码里或者属性里设置一下

dataGridView1.AutoGenerateColumns = false;//此行指定不需要自动绑定数据列,数据列在dataGridView的属性items集合里指定,必须放在绑定数据之前哦,放到后面是没用的

对,在代码里需要加入此行代码,并且这行代码必须放在dataGridView.DataSource之前,如果放在后面是没用的哦。

这块儿介绍一个列属性Frozen(冻结)的意思,即如果datagridview有滚动条出现,拉动滚动条时,冻结的列是不会动的,其他的列会跟随滚动条,上个图看看,当拉动滚动条时,住址栏已经隐藏起来了,而姓名栏是冻结列true

Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader第4张

2、使用IList类集合绑定

我们在软件开发的过程中,有些数据查出来是IList,再转DataTable就比较麻烦了,那么能不能直接绑定IList尼?其实也是可以的,贴一点点代码

 IList<Student> lst = StudentService.GetAllOrderbyNumb();//用Student提供的方法查询到的结果是Ilist
 dataGridView1.DataSource = lst;

其实就是这么滴简单。

3、使用SqlDataReader绑定

使用SqlDataReader绑定需要,现在窗体上放置一个数据源控件BindingSource,上代码

 private void Form1_Load(objectsender, EventArgs e)
        {
            String strConn = "Data Source=210.26.*.*;Initial Catalog=Test;User ID=sa;Password=****";  
            SqlConnection conn = newSqlConnection(strConn);
            String sqlId = "select * from [Student] "; 
            conn.Open(); 
            SqlCommand cmd = newSqlCommand(sqlId, conn);              
            SqlDataReader studentlist =cmd.ExecuteReader();
            bindingSource1.DataSource = studentlist;//数据源控件bindingSourse是必须的
            dataGridView1.DataSource =bindingSource1;
            conn.Close(); 
        }

免责声明:文章转载自《Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XD 05利用xshell远程连接centos安装oracle11g时在图形界面登录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#WinForm,TCP调试工具

Server端配置 参考代码 1)设置基本参数 /// <summary> ///以本机作测试 /// </summary> private IPAddress serverIP = IPAddress.Parse("192.168.0.105"); /// <summary> ///完整终端地址 ///...

winform知识

控件相关 1.文本框/label高度 文本框Multiline属性,设为true就可以了。改完高度后再将此属性改回来,要不然多行文本框,按回去就去下一行了。 label的改autoSize属性,设为false就可以了。 2.控件中文字居中 TextAlign属性:MiddleCenter 3.颜色属性 直接输入 #xxxx 4.如何去掉button按钮的...

C# 中采用treeview递归生成目录树(Winform和Webform两种)

部门表: 课程表: 查询结果结构: 数据结构分析,部门分为部门id和部门名称;课程分为课程id,课程名称,课程路径和课程所属部门。 要求以部门为父节点展示不同部门下的课程。 Winform采用treeview递归生成目录树using System;using System.Collections.Generic;using System.Comp...

Winform控件

控件 添加控件:利用ToolBox,直接在form.cs[design]中可视的添加 代码添加: 在form.designer.cs中InitializeComponent()中添加 如:this.label1 = new System.Windows.Forms.Label() 在form.cs中的构造函数Form()添加 如:Button...

在Winform界面中使用DevExpress的TreeList实现节点过滤查询的两种方式

在我较早的一篇随笔《在DevExpress程序中使用TeeList控件以及节点查询的处理》中,介绍了在树形列表TreeList控件上面,利用SearchControl实现节点的模糊查询过滤操作,效果还是非常不错的,TreeList功能比较强大,界面也相对比微软内置的Winform的TreeView控件美观不少。后来在一次偶然过程中,发现TreeList控件...

WinForm控件设计:DataGridView的行统计实现 原文来自:http://www.cnblogs.com/yyj/archive/2010/10/21/1857518.html

//**************************************////////////////////////////////         #region 显示统计列        /// <summary>        /// 显示DataGridView的统计信息        /// </summary>...