如何将DataGridView绑定到指定属性?(含C#数据类示例)
如何在DataGridView中仅显示Data类的指定属性?
嘿,针对你这个需求,其实有两种超简单的实现方式,选哪个全看你习惯:
方法一:手动指定要显示的列(灵活可控)
这种方式适合你偶尔需要调整列的显示内容、顺序或者样式的场景,步骤很清晰:
- 把DataGridView的
AutoGenerateColumns属性设为false,这样它就不会自动根据类的属性生成所有列了; - 手动添加你需要的列,并把每个列的
DataPropertyName对应到Data类的属性上。
举个代码例子,比如在窗体的Load事件里这么写:
private void Form1_Load(object sender, EventArgs e) { // 假设你已经有了Data的集合数据源 List<Data> dataList = GetYourDataSource(); // 关闭自动列生成 dataGridView1.AutoGenerateColumns = false; // 添加要显示的A列 DataGridViewTextBoxColumn colA = new DataGridViewTextBoxColumn(); colA.HeaderText = "属性A"; colA.DataPropertyName = "A"; // 和Data类的属性名对应 dataGridView1.Columns.Add(colA); // 添加要显示的C列 DataGridViewTextBoxColumn colC = new DataGridViewTextBoxColumn(); colC.HeaderText = "属性C"; colC.DataPropertyName = "C"; dataGridView1.Columns.Add(colC); // 绑定数据源 dataGridView1.DataSource = dataList; }
方法二:用特性标记隐藏不需要的列(更省心)
如果你不想手动加列,想让DataGridView自动生成列但跳过某些属性,那可以用System.ComponentModel里的Browsable特性,直接在你不想显示的属性上标记就行:
先修改你的Data类:
using System.ComponentModel; class Data { public int A { set; get;} [Browsable(false)] // 标记这个属性不显示在DataGridView里 public long B { set; get;} public string C { set; get;} }
然后绑定数据源的时候,只需要把AutoGenerateColumns设为true(默认就是true,甚至可以不用写),直接绑定就行:
private void Form1_Load(object sender, EventArgs e) { List<Data> dataList = GetYourDataSource(); dataGridView1.DataSource = dataList; // 因为AutoGenerateColumns默认是true,所以会自动生成A和C的列,B被特性隐藏了 }
这俩方法都很简单,如果你之后可能要调整列的样式或者顺序,选第一种;如果只是单纯想隐藏某个属性,第二种更省事~
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

