WinForm DataGridView 绑定泛型List(ListT)/ArrayList不显示的原因和解决
背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助!
一、问题
WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI
代码如下:
using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Windows.Forms;namespace WindowsFormsApplication1 {public delegate T BorrowReader<out T>(IDataReader reader);public partial class FormMain : Form{public FormMain(){InitializeComponent();}private List<User> GetUsers(IDataReader reader){var list = new List<User>();while (reader.Read()){list.Add(new User(){ID = reader.GetInt32(reader.GetOrdinal("ID")),UserName = reader.GetString(reader.GetOrdinal("UserName")),NickName = reader.GetString(reader.GetOrdinal("NickName")),Phone = reader.GetString(reader.GetOrdinal("Phone")),QQ = reader.GetString(reader.GetOrdinal("QQ")),});}return list;}private void btnTest_Click(object sender, EventArgs e){dataGridView1.AutoGenerateColumns = false;var list = MyDb.LendReader("select * from Users where 0=0", GetUsers);dataGridView1.DataSource = list;}}public class User{public int ID;public string UserName;public string NickName;public string Phone;public string QQ;}public class MyDb{public static T LendReader<T>(string sql, BorrowReader<T> borrowReader){using (OleDbConnection connection = CreateConnection()){connection.Open();OleDbCommand c = new OleDbCommand(sql, connection);OleDbDataReader r = c.ExecuteReader();return borrowReader(r);}}private static OleDbConnection CreateConnection(){string dbName = Path.Combine(Application.StartupPath, "MyData.mdb");OleDbConnection c = new OleDbConnection{ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName};return c;}} }
二、解决方法
其实很简单,只是很多朋友可能没有考虑到,因为这压根不是什么泛型List或者ArrayList的问题,
只要改代码:
public class User{public int ID;public string UserName;public string NickName;public string Phone;public string QQ;}
为:
public class User{public int ID{ get; set; }public string UserName { get; set; }public string NickName { get; set; }public string Phone { get; set; }public string QQ { get; set; } }
就好了
三、简单讲解
没定义get、set的是字段,定义了就是属性了,为了安全性考虑,DataGridView 的数据源绑定只能是被公开了的属性,而无权访问字段。很多其他控件也有同样的情况。
转载于:https://www.cnblogs.com/herbertchina/p/5842345.html
WinForm DataGridView 绑定泛型List(ListT)/ArrayList不显示的原因和解决相关推荐
- Winform DataGridView中利用WebClient异步加载显示网络地址的图片
转载于:https://www.cnblogs.com/sjcatsoft/archive/2008/11/21/1338448.html
- c# easyui 赋值_C# DataGridView绑定数据源的方法
开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnect ...
- [Winform]DataGridView列自适应宽度
引言 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的. 方法 ...
- 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案
上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...
- C# winform DataGridView 常见属性
C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...
- C# WinForm dataGridView 技巧小结
C# WinForm dataGridView 技巧小结 1.不显示第一个空白列 RowHeaderVisible属性设置为false 2.点击cell选取整行 SelectinModel 属性Ful ...
- winform datagridview控件使用
最近做项目时,显示查询结果总需要绑定到datagridview控件上显示,总结了给datagridview绑定数据的方式,以及导出datagridview数据到excel表格,如有错误请多指教 1.直 ...
- C# winform DataGridView 操作大全
C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...
- C# winform DataGridView 属性说明
① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删除 ⑦ 禁止列或者行的Resize ⑧ 列宽和行高以及列 ...
最新文章
- C#与RSS亲密接触
- torch.utils.ffi is deprecated. Please use cpp extensions instead
- 第二次 图书助手冲刺第一天
- 空壳公司骗贷的常见手段及风控措施
- 第 2 章:初出茅庐【初级篇 - 2.3 动态规划】
- 中南大学夏令营集训营
- c#的http服务器和客户端实例
- Asp.Net Core多榜逆袭,这是.NET最好的时代!
- 更新Docker中的Jenkins版本
- PHP中使用Filter进行数据安全过滤
- 《天天数学》连载26:一月二十六日
- python将csv装入mysql_python 从csv读数据到mysql的实例
- 使用TensorFlow给花朵#127802;分类
- java生成excel中文乱码,JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)...
- 解决Python查询Mysql中文乱码问题
- 常用的 7 款 MySQL 客户端工具,你值得拥有
- 大数据知识点汇总---Redis,Spark,Kafka,Hive,Mysql,Hbase,Hadoop...
- ha rose server安装 sql_Rose HA for SQL2008的安装之一
- 小程序API可以实现哪些功能
- CVBS、VGA、HDMI、MIPI等8种视频接口详解
热门文章
- 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型
- C++编程积累——C++实现十进制与二进制之间的互相转换
- R-CNN目标检测第三弹(Faster R-CNN)
- 自动驾驶汽车自主决策与规划技术(一):里程定位于全局定位简介
- yolo算法的优缺点分析_YOLO算法详细解析(一)
- android.net是哪个jar,【Android Clock Synchronization】Android时钟同步:基于NTP协议的第三方库Apache Commons Net......
- spring boot java app_利用spring boot创建java app
- 计算机三维实体建模与应用教学要求,三维建模教学大纲.doc
- 渗透测试入门14之渗透测试工具1
- 【GPU加速系列】PyCUDA(一):上手简单操作