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

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

先上代码

private void Form1_Load(object sender, EventArgs e)
{
String strConn = "Data Source=210.26.*.*;Initial Catalog=Test;User ID=sa;Password=*****";
SqlConnection conn = new SqlConnection(strConn);
String sqlId = "select * from [Student] ";
conn.Open(); SqlCommand cmd = new SqlCommand(sqlId, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
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上,效果图如下

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

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

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

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

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

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

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

2、使用IList类集合绑定

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

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

其实就是这么滴简单。

3、使用SqlDataReader绑定

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

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

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

  1. Winform开发常用控件之DataGridView的简单数据绑定——自动绑定

    DataGridView控件可谓是Winform开发的重点控件,对于数据的呈现和操作非常方便,DataGridView可谓是既简单又复杂.简单在于其已经集成了很多方法,复杂在于可以使用其实现复杂的数据 ...

  2. Winform开发常用控件之Checkbox和CheckedListBox

    Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...

  3. Winform开发常用控件之TreeView菜单导航和权限用法

    TreeView一个很棒的控件,我们在做WEB开发时常常犯困的一个东东.当然这里介绍winform里面的用法唠. 先介绍几个属性吧,CheckBoxes设置为true的话树形节点前面会出现checkb ...

  4. Winform开发常用控件之ComboBox、ListBox

    ComboBox就是我们常见的下拉框,对于此类控件,我们最关心的当然是数据的绑定和选择值得获取. 首先介绍个属性DropDownStyle,如果不允许ComboBox输入值,只能选择,就选DropDo ...

  5. DevExpress winform XtraEditor常用控件

    最近在公司里面开始使用DevExpress winform的第三方控件进行开发和维护,这里整理一些常用控件的资料以便于后续查看 ComboBoxEdit 这个控件和winform自带的控件差不多,使用 ...

  6. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

  7. WinForm开发-界面控件到实体,实体到界面控件自动绑定

    在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...

  8. C# Winform开发以及控件开发的需要注意的,被人问怕了,都是基础常识

    我是搞控件开发的,经常被人问,所以把一些问题记录了下来!如果有人再问,直接把地址丢给他看. 一. 经常会有人抱怨Winform界面闪烁,下面有几个方法可以尽可能的避免出现闪烁 1.控件的使用尽量以纯色 ...

  9. winform 自定义分页控件 及DataGridview数据绑定

    分页效果如上图所示,用到的控件均为基本控件 ,其方法如下 右击项目-添加-新建项 选择用户控件 然后在用户控件中拖入所需要的Label,Button,Text 用户控件全部代码: using Syst ...

随机推荐

  1. (转)在GitHub多个帐号上添加SSH公钥

    GitHub后台可以添加多个SSH Keys,但是同一个SSH Keys只能在添加在一个帐号上(添加时提示“Key is already in use”).理由很容易想到,SSH公钥使用时相当于用户名 ...

  2. PAT 1044 Shopping in Mars[二分][难]

    1044 Shopping in Mars(25 分) Shopping in Mars is quite a different experience. The Mars people pay by ...

  3. cocos代码研究(26)Widget子类RichView学习笔记

    理论部分 一个显示多个RichElement的容器类. 我们可以使用它很容易显示带图片的文本,继承自 Widget. 代码实践 static RichText * create ()创建一个空的Ric ...

  4. ArrayBuffer:类型化数组

    类型化数组是JavaScript操作二进制数据的一个接口. 这要从WebGL项目的诞生说起,所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足JavaScript与显卡之间大量的.实时的数据交 ...

  5. SQL学习笔记之项目中常用的19条MySQL优化

    在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 0x00 EXPLAIN 做MySQL优化,我们要善用 EXPL ...

  6. bzoj1602 / P2912 [USACO08OCT]牧场散步Pasture Walking(倍增lca)

    P2912 [USACO08OCT]牧场散步Pasture Walking 求树上两点间路径--->lca 使用倍增处理lca(树剖多长鸭) #include<iostream> # ...

  7. 转载:使用 OpenCV 识别 QRCode

    原文链接:http://coolshell.cn/articles/10590.html#jtss-tsina 识别二维码的项目数不胜数,每次都是开箱即用,方便得很. 这次想用 OpenCV 从零识别 ...

  8. 20145204 《Java程序设计》第6周学习总结

    20145204 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 数据流 I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据 ...

  9. UVa 12549 机器人警卫(最小点覆盖)

    https://vjudge.net/problem/UVA-12549 题意: 在一个Y行X列的网格里有空地(.),重要位置(*)和障碍物(#),用最少的机器人看守所有重要位置,每个机器人要放在一个 ...

  10. class []的用法

    span[class='test']    =>匹配所有带有class类名test的span标签 span[class *='test']  =>匹配所有包含了test字符串的class类 ...