您的位置:程序门 -> .net技术 -> asp.net



只剩下一点点分了,一个对我来说比较棘手的问题(gridview追加列的问题)


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


只剩下一点点分了,一个对我来说比较棘手的问题(gridview追加列的问题)[已结贴,结贴人:yzh0313]
发表于:2007-09-26 11:15:21 楼主
功能如下:

有如下一个表(table1):

归属日期       班级       学生     工作类别       所用时间
9.1                   一           a             擦桌子             8
9.1                   一           b             拖地                 7
9.2                   一           c             拖地                 6
9.1                   一           d             擦桌子             5

9.1                   二           e             拖地                 4
9.3                   二           f             拖地                 5
9.1                   二           g             拖地                 6

9.4                   三           h             擦桌子             10
9.1                   三           i             擦窗户             9
9.2                   三           j             擦窗户             8
9.2                   三           k             拖地                 7
9.1                   三           l             擦桌子             6
9.2                   三           m             擦桌子             5
9.1                   三           n             拖地                 4

相关字段如下:       归属日期     date
                                班         级     class
                                学         生     student
                                工作类别     sort(sort=1     擦桌子;sort=2     擦窗户;sort=3   拖地)
                                所用时间     time    

查询条件为归属日期从9.1到9.4,我想得到如下结果:
班级         擦桌子       擦窗户         拖地       合计
一                 13               0                 13           26
二                   0               0                 14           14
三                 21               17               11           49    

我的想法如下:
(1)   先按归属日期将符合条件的班级(不重复)用gridview显示出来
select   distinct   class   from   table1   执行后得到如下结果:  
一  
二  

(2)   然后就是追加列的问题了.例如:(以班级一为例)  
//统计班级一的擦桌子所用时间总和
  select   sum(time)   from   table1   where   sort=1   and   class= "一 "  
//统计班级一的擦窗户所用时间总和  
select   sum(time)   from   table1   where   sort=2   and   class= "一 "  
//统计班级一的擦窗户所用时间总和  
select   sum(time)   from   table1   where   sort=3   and   class= "一 "  
如果能查询到数据,将数据添加到相应的单元格,如果查询不到,就将0添加到相应的单元格(也就是说班级一没有同学擦窗户,那在最后的结果中为0)
不知道我的想法是否合理,能否实现,
如果能的话,   那具体应该怎么追加gridview中的列.
如果我的想法不能实现,那不知道还有没有更好的方法或者思想.分虽然很少,但还是急切的希望各位大虾能帮帮我,谢谢各位了!!!  


发表于:2007-09-26 15:41:221楼 得分:1
在oninit()事件里
加templatefield
发表于:2007-09-26 16:15:432楼 得分:1
看到“擦桌子       擦窗户         拖地”觉得很眼熟阿,呵呵
我觉得合适的做法还是写出sql然后绑定。
非要这么做的话,现取出“一   ”,itembound的时候作为条件在写sql访问数据库取 "擦桌子       擦窗户         拖地 ",
数据库算是累坏了。

sql直接写不出来吗?那帖子不是给答案了吗?
发表于:2007-09-26 16:39:033楼 得分:7
declare   @t   table(归属日期   varchar(20),班级   varchar(20),   学生   varchar(20),工作类别   varchar(20),   所用时间   int)

insert   @t   select   '9.1 ',   '一 '   ,   'a ',   '擦桌子 ',8

union   all   select   '9.1 ',   '一 '   ,   'b ',   '拖地 ',7

union   all   select   '9.1 ',   '一 '   ,   'c ',   '拖地 ',6

union   all   select   '9.1 ',   '一 '   ,   'd ',   '擦桌子 ',5

union   all   select   '9.1 ',   '二 '   ,   'e ',   '拖地 ',4

union   all   select   '9.1 ',   '二 '   ,   'f ',   '拖地 ',5

union   all   select   '9.1 ',   '二 '   ,   'g ',   '拖地 ',6

union   all   select   '9.1 ',   '三 '   ,   'h ',   '擦桌子 ',10

union   all   select   '9.1 ',   '三 '   ,   'i ',   '擦窗户 ',9

union   all   select   '9.1 ',   '三 '   ,   'j ',   '擦窗户 ',8

union   all   select   '9.1 ',   '三 '   ,   'k ',   '拖地 ',7

union   all   select   '9.1 ',   '三 '   ,   'l ',   '擦桌子 ',6

union   all   select   '9.1 ',   '三 '   ,   'm ',   '擦桌子 ',5

union   all   select   '9.1 ',   '三 '   ,   'n ',   '拖地 ',4

select   *   from   @t

select   班级,
              擦桌子=sum(case   when   工作类别= '擦桌子 '   then   所用时间   else   0   end)   ,
              擦窗户=sum(case   when   工作类别= '擦窗户 '   then   所用时间   else   0   end)   ,
              拖地     =sum(case   when   工作类别= '拖地 '   then   所用时间   else   0   end),  
              合计     =sum(所用时间)
from   @t   group   by   班级   order   by   charindex(班级, '一,二,三 ')

测试结果

一     13 0 13 26
二     0 0 15 15
三     21 17 11 49
发表于:2007-09-27 09:05:174楼 得分:0
donglizhong(小d)   (   )  

您好,首先谢谢你的帮助。

我帖子中的内容只是例子,其实我真正要做的有很多很多内容,不可能一条条的添加

kyouken2007(乘凉)
我也想写一条sql就ok   了  
但写不出来啊

还希望高手们帮帮忙,谢谢了!
发表于:2007-09-27 10:07:175楼 得分:1
是内容可能有很多项吗?
关于纵向数据转横向,有很多例子的,lz可以搜一下
发表于:2007-09-30 14:43:226楼 得分:0
从donglizhong   中得到提示,问题已经解决,谢谢各位了!


快速检索

最新资讯
热门点击