在 DataGridView 中显示数据
Posted
技术标签:
【中文标题】在 DataGridView 中显示数据【英文标题】:Displaying Data in a DataGridView 【发布时间】:2014-01-07 21:32:53 【问题描述】:我将学生的成绩存储在一个表格中,如下所示:
StudentID | CourseID | TermID | Grade
1 | 1 | 1 | 10
1 | 2 | 1 | 12
1 | 3 | 1 | 9
1 | 4 | 1 | 5
1 | 5 | 1 | 19
1 | 1 | 2 | 11
前 3 列是外键。 我需要在 DataGridView 中为某个学生显示这些数据,例如:
_____|Course1|Course2|Course3|
Term1| 10 | 15 | 24 |
Term2| 12 | 30 | 50 |
我怎样才能做到这一点?我应该更改数据模型吗?
编辑添加了一些示例数据。 下面的查询可以工作,但我该怎么做:
在结果中将 TermID 替换为其对应的名称。
课程 ID 相同,选择所有可用课程而不是编写其 ID([1]、[2]...)
选择 * 从 ( 选择 [等级]、[学期 ID]、[课程 ID] 来自学生 ID = 1 的年级 ) 作为源 枢 ( MAX([等级]) FOR [CourseID] IN ([1] , [2], [3], [20]) ) 作为支点
【问题讨论】:
创建数据集以获取您需要的所有数据,然后将其绑定到 DATAGRID 控件 你喜欢交叉表吗 到目前为止你尝试了什么。请显示您当前的 DataGridView 代码,以便人们知道您遇到的问题。 使用dataadapter填充一个数据集,然后放入DataGridView.Datasource=dataset.tables(0) 【参考方案1】:您需要将 DataTable 绑定到 DataGridView。也许你需要用 SQL 构建一个数据透视表。
SELECT [Term], [Course1], [Course2], [Course3]
FROM (SELECT * FROM [Grades]) AS [SourceTable]
PIVOT (MAX([Grade])
FOR [Term]
IN ([Course1], [Course2], [Course3]))
AS [PivotTable])
ORDER BY [Term] ASC
EDIT如果说字段是外键,当然需要JOIN对应的表。
【讨论】:
以上是关于在 DataGridView 中显示数据的主要内容,如果未能解决你的问题,请参考以下文章
C#的dataGridView控件里面已经有数据了,怎么让它自动统计总行数?[自动统计:没有点击等任何事件时]
BackgroundWorker 填充 DataGridView
C# datagridviewdatagridGridControl增加行号
C# 怎么把从数据库查询出来的东西累加到dataGridView里面去