一个关于datagrid超难的问题,请教高手帮忙来解决一下??

lishijie910123 2007-08-27 02:45:08
数据库中的表结构是:
id ,state, reason
1 已审核 正确
1 已审核 正确
1 已审核 正确
2 未审核 错误
2 未审核 错误
3 未审核 不正确
现在在datagrid中要显示成这样

编号 审核状态 原因1 原因2 原因3
1 已审核 正确 正确 正确
2 未审核 错误 错误 不正确

这样显示
还要在 审核状态 原因1 原因2 原因3 这四列上加一个表头为内勤审核,
本来这个显示的界面就用了存储过程根据不同的条件查询,现在老板还要这样显示,
请那位高手帮忙解决一下拉!
问题解决立即结帖!!!!!!
...全文
172 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
anncesky 2007-08-27
  • 打赏
  • 举报
回复
其实就是行转列的问题
anncesky 2007-08-27
  • 打赏
  • 举报
回复
Try:

create table #T
(id varchar(2) , n1 varchar(2) , n2 varchar(2))

Insert into #t
select '01', 'x', 'x' Union
select '02', 'x', 'y' Union
select '03', 'x', 'z' Union
select '04', 'y', 'x' Union
select '05', 'y', 'y' Union
select '06', 'y', 'z' Union
select '07', 'z', 'x' Union
select '08', 'z', 'y' Union
select '09', 'z', 'z'

Select * from #t

declare @sql1 varchar(8000)
declare @sql2 varchar(8000)
declare @sql3 varchar(8000)

Select @sql1 = '' , @sql2 = '' , @sql3 = ''

Select @sql1 = @sql1 + ', max(case when id = ''' + id + ''' then id else '''' end) as '''+ 'col' + id + ''''
from #t
group by id
Select @sql2 = @sql2 + ', max(case when id = ''' + id + ''' then n1 else '''' end) '
from #t
group by id
Select @sql3 = @sql3 + ', max(case when id = ''' + id + ''' then n2 else '''' end) '
from #t
group by id

Select @sql1 = stuff(@sql1 , 1 , 1, '')
Select @sql2 = stuff(@sql2 , 1 , 1, '')
Select @sql3 = stuff(@sql3 , 1 , 1, '')


Select @sql1 = ' Select ' + @sql1 + ' from #t '
Select @sql2 = ' Select ' + @sql2 + ' from #t '
Select @sql3 = ' Select ' + @sql3 + ' from #t '
Exec(@sql1 + ' union all ' + @sql2 + ' union all' + @sql3)

drop table #
lishijie910123 2007-08-27
  • 打赏
  • 举报
回复
可能是大家不理解我的意思,
reason没有什么直接联系,
数据也是从这一张表中的出来的,
跟其他表无关
p405061658 2007-08-27
  • 打赏
  • 举报
回复
create view biao
as
select a.reason as 原因3 from 表 a,表 b where a.id=b.id and a.state=b.state and a.reason=b.reason
wen01071081 2007-08-27
  • 打赏
  • 举报
回复
然后再将datatable绑定到datagrid上
wen01071081 2007-08-27
  • 打赏
  • 举报
回复
你先把数据从库里取出来放在一个dataset里
创建一个datatable
datatable创建列编号 、状态、原因1、原因2、原因3
循环dataset处理把数据插入datatable里
action201 2007-08-27
  • 打赏
  • 举报
回复
用datagrid的模板列就可以搞定啦。
WNASP 2007-08-27
  • 打赏
  • 举报
回复
使用repeater

使用SQL实现交叉表
如果使用的是SQL2005交叉表的实现更简单,查查资料吧。
sendling 2007-08-27
  • 打赏
  • 举报
回复
mark
coolbyefish 2007-08-27
  • 打赏
  • 举报
回复
自己 封个对象
class check()
{
id;
state;
reason1;
reason2;
reason3;
}



datagrid的数据原绑 list
list是由 check()对象组成
<asp:BoundColumn DataField="id" HeaderText="编号"></asp:BoundColumn>
<asp:BoundColumn DataField="state" HeaderText="审核状态"></asp:BoundColumn>
<asp:BoundColumn DataField="reason1" HeaderText="原因1"></asp:BoundColumn>
<asp:BoundColumn DataField="reason2" HeaderText="原因2"></asp:BoundColumn>
<asp:BoundColumn DataField="reason3" HeaderText="原因3"></asp:BoundColumn>



自己在底层 把数据重数据库取出来后 填入相应的check 对象里面
zhchg6666 2007-08-27
  • 打赏
  • 举报
回复
up
godgreat 2007-08-27
  • 打赏
  • 举报
回复
该什么绑定还是怎么绑定,多表取数据是一样的,添加绑定列
<asp:BoundColumn DataField="id" HeaderText="编号"></asp:BoundColumn>
<asp:BoundColumn DataField="state" HeaderText="状态"></asp:BoundColumn>
<asp:BoundColumn DataField="reason" HeaderText="审核状态"></asp:BoundColumn>
<asp:BoundColumn DataField="*" HeaderText="原因1"></asp:BoundColumn>
<asp:BoundColumn DataField="*" HeaderText="原因2"></asp:BoundColumn>
<asp:BoundColumn DataField="*" HeaderText="原因3"></asp:BoundColumn>
zhenjiaobing 2007-08-27
  • 打赏
  • 举报
回复
我来学习。!
godgreat 2007-08-27
  • 打赏
  • 举报
回复
晕,标头不是可以

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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