问题是这样的:
我想用.net 生成一个复杂统计报表,表格的样子如下:
————————————————————————————————————————————
| | 1月 | 2月 | 支出合计 |
项目名称|部门名称|——————————————————————————————| 备注
| | 实际支出|未达金额 | 实际支出|未达金额| 实际支出|未达金额 |
———————————————————————————————————————————— 合计 | | | | | | |
————————————————————————————————————————————
| 办公室 | | | | | | |
|———————————————————————————————————————
办公用品| 技术处 | | | | | | |
|————————————————————————————————————————
| 财务部 | | | | | | |
————————————————————————————————————————————由于我不知道怎么贴图片,大家凑合着看吧,请见谅!
然后项目名称那一列有可能有多个项目信息,每个项目信息有可能对应多个部门信息。
最后上面的月份有可能是从1月到12月。
请教各位高手这样的2维动态表格怎么用.net写啊,急求各位大虾帮忙!!!
我想用.net 生成一个复杂统计报表,表格的样子如下:
————————————————————————————————————————————
| | 1月 | 2月 | 支出合计 |
项目名称|部门名称|——————————————————————————————| 备注
| | 实际支出|未达金额 | 实际支出|未达金额| 实际支出|未达金额 |
———————————————————————————————————————————— 合计 | | | | | | |
————————————————————————————————————————————
| 办公室 | | | | | | |
|———————————————————————————————————————
办公用品| 技术处 | | | | | | |
|————————————————————————————————————————
| 财务部 | | | | | | |
————————————————————————————————————————————由于我不知道怎么贴图片,大家凑合着看吧,请见谅!
然后项目名称那一列有可能有多个项目信息,每个项目信息有可能对应多个部门信息。
最后上面的月份有可能是从1月到12月。
请教各位高手这样的2维动态表格怎么用.net写啊,急求各位大虾帮忙!!!
解决方案 »
- 关于C#中,采用excel com组件操作excel的问题
- repeater 的问题求救!!!很急。。。。大家来看下帮下忙了
- UserControl重绘时如何解决闪烁问题
- 如何把一个位图的白色像素点变为透明色,下面的代码为什么不成功,白色像素点仍旧是白色
- 关于PocketSOAP的问题
- 看哪位高手能帮忙写个批处理
- C++/CLI真的可以达到VC6.0的底层控制能力,而不影响C++的性能优势吗?真的超越了托管C++吗?
- 怎样理解“Socket listener = (Socket)ar.AsyncState”,
- 救命!!!水晶*报表*打印
- 怎么样才能把一个SQL字段中的数据分别显示在dataGrid的不同例中啊?
- C#如何操作并口(用哪个dll,该dll中的参数说明)
- 计算结果小数 .37如何显示为0.37?
webform比较简单,winform的话会有一点难度,建议还是使用一些第三方的表格控件比较容易
业务员 地 区
北京 上海 深圳
张三 100 200 300 实际上Asp.Net下的DataGrid只不过是一个HtmlTable,只不过在HtmlTable的基础上添加了很多属性、方法,纳入ViewState机制,来生成、控制它;有了这一点认识,事情就很好办了:
我们可以在属性生成器中可以定义列的表头,它实际上只不过是在列之间插入了“</td><td>”的html标记,如此而已;因此根据上面的例子,可以在第3列的header里输入以下内容“</td></tr><TR><TD>北京</TD><TD>上海</TD><TD>深圳</TD></TR>”,这时你会发现2层表头就出现了:
业务员 地 区
北京 上海 深圳
张三 100 200 300 但是显然还不够,因为我们还需要行、列的合并
我们可以在DataGrid的ItemDataBound事件中处理
if(e.Item.ItemType == ListItemType.Header)
{
e.Item.Cells[0].RowSpan = 2;
e.Item.Cells[1].ColumnSpan = 3;
e.Item.Cells[2].Visible = false;
e.Item.Cells[3].Visible = false;
}OK!成功了,就是如此简单。
至于行的合并,其实也是同理,想想就能解决
由于我是初学.net,所以还有个问题想请教一下,
你生成的表格里的数据(就是:张三 100 200 300)是怎么显示出来的,是静态数据马??还是动态数据,怎么弄??
可不可给个简单的完整例子??
你可以不用datagrid
动态生成html表格就是在.cs文件中输出一段html代码
这个比较容易吧?~~~~~~~比如在前面有个runat=server的divdiv.innerhtml = "<table><tr><td>这里是你的数据</td></tr></table>"
这样你想要什么格式的都可以
lovefootball(蟑螂)
如果你不理解上面的例子
你可以不用datagrid
动态生成html表格就是在.cs文件中输出一段html代码
这个比较容易吧?~~~~~~~比如在前面有个runat=server的divdiv.innerhtml = "<table><tr><td>这里是你的数据</td></tr></table>"
这样你想要什么格式的都可以
————————————————————————————————————————
问题时月份是根据查询的时间来确定的,而且项目名称,部门名称也都是根据查询出来的,
如果用你的方法怎么弄呢???