【急救!!】DataGridView如何将Column和Row对换显示?也就是将DataGridView翻转90度。。。

dyshadow 2009-02-26 03:19:53
我们知道,一般的DataGridView里面设置Column,而Column是显示在顶部,下面是一行一行的数据:

| columnheader1 | columnheader2 | columnheader3 |
| row1 data1 | row1 data2 | row1 data2 |
| row2 data1 | row2 data2 | row2 data2 |
| row3 data1 | row3 data2 | row3 data2 |
| row4 data1 | row4 data2 | row4 data2 |

.....

我们客户需要做一个跟日期很有关系的程序,而且日期需要横向表示:
| 2009/01/01 | 2009/01/02 | 2009/01/03 | 2009/01/04 | 2009/01/05 | 2009/01/06 | 2009/01/07 | 2009/01/08 |
产品信息1
产品信息2
产品信息3

产品信息1~3是固定的,而日期自然是会根据业务增加。
我们设计表的时候,自然不会设计许多字段。设计一个日期字段,产品信息1~3字段完事。

日期 | 产品信息1 | 产品信息2 | 产品信息3
2009/01/01
2009/01/02
2009/01/03
2009/01/04


也就是说数据是纵向保存的,如何将它横向表示。当然程序内部对数据的操作实现最好还是跟原来一样操作。

因为牵涉到十分复杂的计算,所以最好能够在表示层进行操作。

我自己也有解决方法,但是十分复杂,在进行复杂计算的时候,十分可能导致混乱,所以在这里求个好方法。
...全文
750 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyshadow 2009-03-12
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 tmd456 的回复:]

合一小例子,希望对你有帮助


问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values…
[/Quote]

似乎没有通过啊~~~郁闷....
JaggerLee 2009-03-04
  • 打赏
  • 举报
回复
楼主,你用DataList 的模板列来设计你的列数据模板

然后将DataList排版方式改为横向排版
tmd456 2009-02-27
  • 打赏
  • 举报
回复

合一小例子,希望对你有帮助


问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go


declare @sql varchar(1024)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql)
xutao888 2009-02-27
  • 打赏
  • 举报
回复
搜索以下“交叉表”
tmd456 2009-02-27
  • 打赏
  • 举报
回复
sql里行列转换
wolf1118baby 2009-02-27
  • 打赏
  • 举报
回复
手动更改数据源!
dyshadow 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jerryma888888 的回复:]
SQL里进行行转列显示咯。
就操作麻烦点,自己在GRID上定位,找到操作需要的条件字段。
[/Quote]

SQL里如何进行转换?
深鱼 2009-02-27
  • 打赏
  • 举报
回复
学习!!!
jerryma888888 2009-02-27
  • 打赏
  • 举报
回复
SQL里进行行转列显示咯。
就操作麻烦点,自己在GRID上定位,找到操作需要的条件字段。
yingmu 2009-02-26
  • 打赏
  • 举报
回复
用四楼的方法做显示,如果要修改,可以在双击后打开一个新的窗口进行修改和更新数据库的操作,也就是显示和修改分开进行。
homejiji 2009-02-26
  • 打赏
  • 举报
回复
mark
ls3697264 2009-02-26
  • 打赏
  • 举报
回复
UP
dyshadow 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 downmoon 的回复:]
你试试sql2005/2008的行转列
http://msdn.microsoft.com/zh-cn/library/ms140308(SQL.90).aspx
http://msdn.microsoft.com/zh-cn/library/ms140308.aspx
[/Quote]
现在数据库用的还是2000。。。
不过上面的帮助看了,似乎没有实现方法么。。。就讲了个概念。
花郎 2009-02-26
  • 打赏
  • 举报
回复
关注一下!!!!!!
Comer 2009-02-26
  • 打赏
  • 举报
回复
以前做过类似的,用SQL的存储过程实现的
dyshadow 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wangping_li 的回复:]
如果手动填的话还不如把你的数据源构造成纵向的,直接绑定
[/Quote]

意思先建个临时表?将数据写入后,绑定;完成操作的时候再写如正式表?
wangping_li 2009-02-26
  • 打赏
  • 举报
回复
如果手动填的话还不如把你的数据源构造成纵向的,直接绑定
yangjian0830 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 CoSoDoNo 的回复:]
[/Quote]
我以前遇到的时候在表示层也是这么做的。
期待好方法。
dyshadow 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lsj_zrp 的回复:]
只能先读出来,然后根据数据的行数生成一个临时的datatable的columns
再循环添加数据了
----------------------------------------------------------
期待更好的方法
[/Quote]

这个办法我想到了,因为读出的数据并不是单单的显示,还需要响应用户修改,其他相关数值的连动计算,数据库的更新。
难道DATATABLE转置下,有修改后,变动,要更新数据库的时候再转置?这个性能消耗哦~~~
加载更多回复(3)
vb.net操作DataGridView控件的用法的集合,包括: 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一列新追加行非表示 4. DataGridView判断当前选中行是否为新追加的行 5. DataGridView删除行可否设定 6. DataGridView行列不表示和删除 DataGridView控件用法合集(二) 7. DataGridView行列宽设置为不能编辑 8. DataGridView行高列幅自动调整 9. DataGridView指定行列冻结 10. DataGridView列顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、列、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字列设定 16. DataGridView选择的部分拷贝至剪贴板 17.DataGridView粘贴 18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView控件用法合集(四) 19. DataGridView中的ContextMenuStrip属性 20. DataGridView指定滚动框位置 21. DataGridView手动追加列 22. DataGridView全体分界线样式设置 23. DataGridView根据单元格属性更改显示内容 24. DataGridView新追加行的行高样式设置る 25. DataGridView新追加行单元格默认值设置 DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获 DataGridView控件用法合集(六) 29. DataGridView行排序(点击列表头自动排序的设置) 30. DataGridView自动行排序(新追加值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定列指定排序 DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格样式格式化 38. DataGridView指定单元格颜色设定 39. DataGridView单元格文字字体设置 40. DataGridView根据单元格值设定单元格样式 DataGridView控件用法合集(八) 41. DataGridView设置单元格背景颜色 42. DataGridView行样式描画 43. DataGridView显示行号 44. DataGridView焦点所在单元格焦点框不显示的设定 DataGridView控件用法合集(九) 45. DataGridView显示选择框CheckBox 46. DataGridView显示下拉框ComboBox 47. DataGridView单击打开下拉框 48. DataGridView显示按钮 49. DataGridView显示链接 50. DataGridView显示图像 DataGridView控件用法合集(十) 51. DataGridView编辑中单元格控件取得 52. DataGridView输入自动完成 53. DataGridView单元格编辑时键盘KEY事件取得 54. DataGridView下拉框(ComboBox)单元格编辑时事件取得 55. DataGridView下拉框(ComboBox)单元格允许文字输入设定 DataGridView控件用法合集(十一) 56. DataGridView根据值不同在另一列中显示相应图片 57. DataGridView显示条(ProgressBar) 58. DataGridView中添加MaskedTextBox DataGridView控件用法合集(十二) 59. DataGridView中Enter键按下焦点移至旁边的单元格 60. DataGridView行集合化(Group)

110,536

社区成员

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

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

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