DataGridView中绑定List泛型的问题

1、数据绑定的问题:
  当DataGridView的DataSource绑定的为DataTable时,当DataTable的内容发生改变时,DataGridView中的内容会自动跟随DataTable改变而不用重新绑定数据源;

  而把List<T>绑定到DataGridView则不然,当List<T>的内容发生改变是,需要先设置DataGridView的DataSource属性为new List<T>(),

  然后再把作过改动的List<T>重新赋于DataGridView的DataSource。

  (注:不能设置DataGridView的DataSource属性为null,否则会破坏DataGridView中已经设置好的列结构。)

2、数据绑定后的添加删除问题:

  如果要对绑定在DataGridView中的List<T>进行数据的添加删除,先要把List<T>转换成BindingList<T>,

  再进行绑定:DataGridView1.DataSource=new BindingList<MyClass>(new List<MyClass>())。否则的话会产生许多意想不到的错误。

  如:初始绑定空数据后再添加数据绑定后,却取不到DataGridView.CurrentCell属性。

时间: 2024-09-20 00:13:34

DataGridView中绑定List泛型的问题的相关文章

DataGridView中绑定DataTable数据及相关操作实现代码_实用技巧

复制代码 代码如下: DataTable DT = new DataTable(); DT.Columns.Add("Name"); DT.Columns.Add("Sex"); DataRow dr = DT.NewRow(); dr[0] = "Kenny"; dr[1] = "男"; DT.Rows.Add(dr); A:在DataGridView控件的列编辑中将DataPropertyName属性设为DataTable

winfrom中json解析的字符串绑定到datagridview中如何实现鼠标双击某一行移除本行

问题描述 winfrom中json解析的字符串绑定到datagridview中如何实现鼠标双击某一行移除本行 winfrom中json解析的字符串绑定到datagridview中如何实现鼠标双击某一行移除本行 解决方案 如果是自己添加的row,那就直接从rows中remove就行了,如果是绑定到数据源的,那就先从数据源中删除,再重新绑定 解决方案二: 哦哦,谢谢啦.但是如果大叔你提供哈代码就最好啦.

用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了

问题描述 用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了 ACCESS数据库表中列的顺序是1左,2左,11左,12左,1右,2右,11右,12右,但是当显示在datagridview中时就呈现上面的乱码, 解决方案 这是一个bug 试试看:http://blog.csdn.net/lukesunch/article/details/4644101 再不行就不要绑定,手工循环添加.

C#中如何将多张表添加到同一个datagridview中

问题描述 C#中如何将多张表添加到同一个datagridview中 C#中如何将多张表添加到同一个datagridview中呢?比如我在做题库系统,在数据库中将不同题型分不同表建,可如何在C#中将所有试题显示在同一个datagridview中呢 解决方案 你可以用sql联合查询成一张表,或者不直接绑定数据,而是通过代码添加行 解决方案二: select * from Aunionselect * from Bunionselect * from C... 将多个表连接起来,然后一次性绑定给dat

怎么设置datagridview中某列的单元格为下拉形式 ?

问题描述 怎么设置datagridview中某列的单元格为下拉形式?下列的时候要显示一个三列的网格.当在datagridview中单元格输入条件时,下拉网格中的值也随之变化. 解决方案 解决方案二:该列使用DataGridViewComboboxColumn解决方案三:引用1楼fangxinggood的回复: 该列使用DataGridViewComboboxColumn 这个好像不行吧..1.用combobox好像只能显示一列..(我要显示多列)2.用Combobox在我输入值时不能查找comb

datagridview-怎么删除DATAGRIDVIEW中字符为“0:00:00”的行

问题描述 怎么删除DATAGRIDVIEW中字符为"0:00:00"的行 要把某一列中含有字符"0:00:00"的行全部删除,出错了,请大家指正或者更好的方法.谢谢 解决方案 你可以直接从数据源判断,如果某条数据的Minimun knit time的值为0:0:0,则绑定该记录或者从数据源中移除该记录,再绑定. 解决方案二: 你的错是索引超出,看看访问Rows或Cell的索引对不对 解决方案三: 数据源是直接从CSV格式导入到DATAGRIDVIEW的,如果是在SQ

C#从数据库导出数据到datagridview,如何实现才能使得数据能在datagridview中编辑

问题描述 如题,C#从数据库导出数据到datagridview,如何实现才能使得数据能在datagridview中可编辑求支招 解决方案 解决方案二:GridView绑定的数据源是DataTable的话,数据是可以编辑的.解决方案三:好像是可以添加模板的,忘记了...

窗体-在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中

问题描述 在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中 小弟有个问题求教一下,如何将excel 文件放到VS的剪贴板中,再利用代码读取存储在剪贴板上的数据将其显示在winform的DataGridView中? 解决方案 C#操作EXCEL全解(代码) 提示:运行之前必须先引用Interop.Excel.dll模块 using System; using System.Collections.Generic; using System.Tex

datagridview列绑定下拉问题?

问题描述 我要在datagridview中某一列显示为下列形式,,,下拉的内容有三列...请问怎么实现? 解决方案 解决方案二:相应列变为模板列.然后添加下拉控件.建立下拉控件的数据源并绑定.控制下拉框的显示值为相应列值.思路是这样,例子不太好写.需要的话可以找找.你先试试吧.解决方案三:添加这列时选datagridviewcomboboxcolumn列解决方案四:该回复于2011-11-23 14:45:06被版主删除解决方案五:引用2楼ylly11111的回复: 添加这列时选datagrid