背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助!

一、问题

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不显示的原因和解决相关推荐

  1. Winform DataGridView中利用WebClient异步加载显示网络地址的图片

    转载于:https://www.cnblogs.com/sjcatsoft/archive/2008/11/21/1338448.html

  2. c# easyui 赋值_C# DataGridView绑定数据源的方法

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnect ...

  3. [Winform]DataGridView列自适应宽度

    引言 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的. 方法 ...

  4. 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案

    上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...

  5. C# winform DataGridView 常见属性

    C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...

  6. C# WinForm dataGridView 技巧小结

    C# WinForm dataGridView 技巧小结 1.不显示第一个空白列 RowHeaderVisible属性设置为false 2.点击cell选取整行 SelectinModel 属性Ful ...

  7. winform datagridview控件使用

    最近做项目时,显示查询结果总需要绑定到datagridview控件上显示,总结了给datagridview绑定数据的方式,以及导出datagridview数据到excel表格,如有错误请多指教 1.直 ...

  8. C# winform DataGridView 操作大全

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  9. C# winform DataGridView 属性说明

    ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删除 ⑦ 禁止列或者行的Resize ⑧ 列宽和行高以及列 ...

最新文章

  1. C#与RSS亲密接触
  2. torch.utils.ffi is deprecated. Please use cpp extensions instead
  3. 第二次 图书助手冲刺第一天
  4. 空壳公司骗贷的常见手段及风控措施
  5. 第 2 章:初出茅庐【初级篇 - 2.3 动态规划】
  6. 中南大学夏令营集训营
  7. c#的http服务器和客户端实例
  8. Asp.Net Core多榜逆袭,这是.NET最好的时代!
  9. 更新Docker中的Jenkins版本
  10. PHP中使用Filter进行数据安全过滤
  11. 《天天数学》连载26:一月二十六日
  12. python将csv装入mysql_python 从csv读数据到mysql的实例
  13. 使用TensorFlow给花朵#127802;分类
  14. java生成excel中文乱码,JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)...
  15. 解决Python查询Mysql中文乱码问题
  16. 常用的 7 款 MySQL 客户端工具,你值得拥有
  17. 大数据知识点汇总---Redis,Spark,Kafka,Hive,Mysql,Hbase,Hadoop...
  18. ha rose server安装 sql_Rose HA for SQL2008的安装之一
  19. 小程序API可以实现哪些功能
  20. CVBS、VGA、HDMI、MIPI等8种视频接口详解

热门文章

  1. 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型
  2. C++编程积累——C++实现十进制与二进制之间的互相转换
  3. R-CNN目标检测第三弹(Faster R-CNN)
  4. 自动驾驶汽车自主决策与规划技术(一):里程定位于全局定位简介
  5. yolo算法的优缺点分析_YOLO算法详细解析(一)
  6. android.net是哪个jar,【Android Clock Synchronization】Android时钟同步:基于NTP协议的第三方库Apache Commons Net......
  7. spring boot java app_利用spring boot创建java app
  8. 计算机三维实体建模与应用教学要求,三维建模教学大纲.doc
  9. 渗透测试入门14之渗透测试工具1
  10. 【GPU加速系列】PyCUDA(一):上手简单操作