基本上,我想显示所有学生的列表(在最左侧有他们的名字),每行(每个学生)显示在comboBox中选择的月份的每个日期。
我对如何解决这个问题感到很难过。
这是我到目前为止所拥有的:
//cmbMes is the combobox that holds each month to be selected.
private void cmbMes_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
int gradeParaleloId = Convert.ToInt32(cmbGradeParalelo.SelectedValue);
var studentRepo = new StudentRepository();
var students = studentRepo.FindAllStudentsFromGradeParalelo(gradeParaleloId);
var rows = new List<DataGridViewRow>();
foreach (var student in students)
{
DataGridViewRow newRow = new DataGridViewRow();
newRow.SetValues(new object[] { "test", "test", "test" });
rows.Add(newRow);
}
dataGridView1.DataSource = rows;
}
因此,出于测试目的,我在那里做了一点。它正在取得正确的学生,但是SetValues方法似乎没有做我认为应该做的事情。
此时我愿意接受建议。我只是这样做,因为我刚刚开始解决它。也许使用一些Linq-fu有更好的方法。
具体问题是,这是接近它的正确方法,创建DataGridViewRows的集合并将它们设置为.DataSource吗?
感谢您的建议。
答案 0 :(得分:0)
你可能想要这样的东西:
var q = from i in new int[] { 1, 2, 3, 4, 5, 6, 7 }
select new { Id = i, Name = "test" };
dataGridView1.DataSource = q.ToList();
诀窍是属性名称被转换为列。您不需要在此处使用DataGridViewRow类型。