DataGridView 如何实现像学生成绩统计的效果

xieganlin 2010-07-28 01:25:39
效果如下:
姓名 语文 数学 英语
-----------------------------------
小明 78 80 90
小江 67 78 76
……


知道的请帮帮忙。急用,谢谢了!
...全文
232 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
天下如山 2010-07-29
  • 打赏
  • 举报
回复
我汗 我只是说你如上的题目的东西 不牵扯到数据库设计 设计库不还是要看需求吗?
xieganlin 2010-07-29
  • 打赏
  • 举报
回复
有你这样设计数据库的吗?那也太不合理了。这应该是三个表的数据了,学生信息表,学科表和分数表才行了。
天下如山 2010-07-29
  • 打赏
  • 举报
回复
汗 这不就是一张表 读出来 绑定给gridview不就OK啦


表 字段:id 姓名 语文 数学 英语
数据: 0 严晖 100 100 100

不是这样吗?
xieganlin 2010-07-29
  • 打赏
  • 举报
回复
就是第一列是学生姓名,后面的就是学科的分数
bkln81 2010-07-29
  • 打赏
  • 举报
回复
不太明白楼主的意思,具体想实现怎样的功能
行者_ 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xieganlin 的回复:]
没有人知道吗?
[/Quote]
开始的时候 问题不明确

[Quote=引用 25 楼 xieganlin 的回复:]
有你这样设计数据库的吗?那也太不合理了。这应该是三个表的数据了,学生信息表,学科表和分数表才行了。
[/Quote]
现在基本明确了,请给出 数据库中你说的这三个表的 格式

其实个人认为是 在数据库中,查询时,全部弄好,形成一个Datatable 然后直接绑定到 datagridview中,这样灵活性更高
lovexiongnan 2010-07-29
  • 打赏
  • 举报
回复
如果是你想要每个学生的总分的话,先去到数据集ds之后,用ds.tables[0].columns.add("total")的方法把总分的列给添加进去,然后重新定义一个ds2,然后在sum的sql语句求出一个数据集,然后用循环把ds2.tables[0].rows[i][0]赋值到ds1。tables【0】。rows【i】["total"]就行了。。。~~~
天下如山 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 xieganlin 的回复:]
那现在我说了。你知道了吗?
[/Quote]


真是无语 。。。。
xieganlin 2010-07-29
  • 打赏
  • 举报
回复
自己再顶起来。高手帮帮忙。
贫僧又回来了 2010-07-29
  • 打赏
  • 举报
回复
为什么不在数据库里处理好了再绑定呢
颤菊大师 2010-07-29
  • 打赏
  • 举报
回复
行转列?
小明 数学 65
小张 数学 75
小王 数学 76
小明 语文 65
小张 语文 75
小王 语文 76
----------------
名字 数学 语文
小明 65 65
小张 75 75
小王 76 76

如果是,搜索 :行转列



xhddd111 2010-07-29
  • 打赏
  • 举报
回复
数据库怎样设计其实都是一样,最后都是用datagridview绑定数据源,我觉的是你的sql语句不会查询吧
xieganlin 2010-07-29
  • 打赏
  • 举报
回复
那现在我说了。你知道了吗?
xieganlin 2010-07-28
  • 打赏
  • 举报
回复
楼上的。你这样就不是教我给datagridview赋值吧。这我会。我是要怎么设计一下个样的表格在其中显示
zhao_zps 2010-07-28
  • 打赏
  • 举报
回复


SqlConnection connection = 数据库连接字符串;
connection.Open();

string sql = "select * from tablename";

///初始化data1
data1 = new SqlDataAdapter(sql, connection);
///填充dataset

data1.Fill(data, "tablename");
///指定显示数据源
dataGridView1.DataSource = data.Tables["tablename"];
connection.Close();

xieganlin 2010-07-28
  • 打赏
  • 举报
回复
楼上的很像没有明白我的意思。我是学生一次考试的成绩。不是说多次成绩的和。
malun666 2010-07-28
  • 打赏
  • 举报
回复
最好是在数据库端实现,用rollup
例如:
create table #t(a int,b int,c int,d int,e int)
insert into #t values(1,2,3,4,5)
insert into #t values(1,2,3,4,6)
insert into #t values(1,2,3,4,7)
insert into #t values(1,2,3,4,8)
insert into #t values(1,3,3,4,5)
insert into #t values(1,3,3,4,6)
insert into #t values(1,3,3,4,8)
insert into #t values(1,3,3,4,7)

insert into #t values(2,2,2,4,5)
insert into #t values(2,2,3,4,6)
insert into #t values(2,2,4,4,7)
insert into #t values(2,2,5,4,8)
insert into #t values(2,3,6,4,5)
insert into #t values(2,3,3,4,6)
insert into #t values(2,3,3,4,8)
insert into #t values(2,3,3,4,7)

只有一个分类汇总列时,只需要一个合计。只需要增加with rollup即可。
select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,
sum(b),sum(c),sum(d),sum(e) from #t group by a with rollup
WOSHIMAHAIFENG 2010-07-28
  • 打赏
  • 举报
回复
直接从数据库中读出来,绑定时去掉不必要的列,修改列标题再填充
josxhn 2010-07-28
  • 打赏
  • 举报
回复
先建立一个类封装你的数据(成员可参考数据库表的记录)比如:
class score
{
string name;
int chinses;
int math;
int english;
}

然后从数据库取了数据以后,按表字段和成员变量的关系填充进去,一条记录填充一个类的实例 ,比如
score s=new score (取出来的字段值序列。。。)

然后用集合的数据结构这样定义
IList<score> sList=new List<score>();
将刚才建里的实例填充进去
sList.Add(s);
有多少个score类的实例就填充多少次

最后把IList<>绑定到控件:
DataGridView.DataSource=sList;

不懂装懂 2010-07-28
  • 打赏
  • 举报
回复
...问题描述不清,按我的理解dataGridView1.DataSource=list
加载更多回复(13)

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧