问题描述
我有一个数组 arrStudents,其中包含我学生的年龄、GPA 和姓名,如下所示:
I have an array, arrStudents, that contains my students' age, GPA, and name like so:
arrStudents[0].Age = "8"
arrStudents[0].GPA = "3.5"
arrStudents[0].Name = "Bob"
我尝试像这样将 arrStudents 绑定到 DataGridView:
I tried to bind arrStudents to a DataGridView like so:
dataGridView1.DataSource = arrStudents;
但是数组的内容没有显示在控件中.我错过了什么吗?
But the contents of the array do NOT show up in the control. Am I missing something?
推荐答案
和 Adolfo 一样,我已经验证了这 有效.显示的代码没有任何问题,所以问题一定出在您没有显示的代码中.
As with Adolfo, I've verified that this works. There is nothing wrong in the code shown, so the problem must be in the code you aren't showing.
我的猜测:Age
等不是公共属性;它们要么是internal
,要么是fields,即public int Age;
而不是public int Age {get;set;}.
My guess:
Age
etc are not public properties; either they are internal
or they are fields, i.e. public int Age;
instead of public int Age {get;set;}
.
以下是适用于类型良好的数组和匿名类型数组的代码:
Here's your code working for both a well-typed array and an array of anonymous types:
using System;
using System.Linq;
using System.Windows.Forms;
public class Student
{
public int Age { get; set; }
public double GPA { get; set; }
public string Name { get; set; }
}
internal class Program
{
[STAThread]
public static void Main() {
Application.EnableVisualStyles();
using(var grid = new DataGridView { Dock = DockStyle.Fill})
using(var form = new Form { Controls = {grid}}) {
// typed
var arrStudents = new[] {
new Student{ Age = 1, GPA = 2, Name = "abc"},
new Student{ Age = 3, GPA = 4, Name = "def"},
new Student{ Age = 5, GPA = 6, Name = "ghi"},
};
form.Text = "Typed Array";
grid.DataSource = arrStudents;
form.ShowDialog();
// anon-type
var anonTypeArr = arrStudents.Select(
x => new {x.Age, x.GPA, x.Name}).ToArray();
grid.DataSource = anonTypeArr;
form.Text = "Anonymous Type Array";
form.ShowDialog();
}
}
}
这篇关于是否可以将数组绑定到 DataGridView 控件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!