问题是这样的:
    我想用.net 生成一个复杂统计报表,表格的样子如下:
————————————————————————————————————————————
        |        |         1月        |        2月       |       支出合计     |     
项目名称|部门名称|——————————————————————————————|  备注
        |        |  实际支出|未达金额 | 实际支出|未达金额| 实际支出|未达金额  |
————————————————————————————————————————————      合计       |          |         |         |        |         |          |
————————————————————————————————————————————
        | 办公室 |          |         |         |        |         |          | 
        |——————————————————————————————————————— 
办公用品| 技术处 |          |         |         |        |         |          |
        |————————————————————————————————————————
        | 财务部 |          |         |         |        |         |          |
————————————————————————————————————————————由于我不知道怎么贴图片,大家凑合着看吧,请见谅!
然后项目名称那一列有可能有多个项目信息,每个项目信息有可能对应多个部门信息。
最后上面的月份有可能是从1月到12月。
请教各位高手这样的2维动态表格怎么用.net写啊,急求各位大虾帮忙!!!

解决方案 »

  1.   

    winform还是webform?
    webform比较简单,winform的话会有一点难度,建议还是使用一些第三方的表格控件比较容易
      

  2.   

    webform,这位大哥请说具体一点阿!!1
      

  3.   


    业务员 地 区  
    北京 上海 深圳 
    张三 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!成功了,就是如此简单。
    至于行的合并,其实也是同理,想想就能解决
      

  4.   

    上面的内容贴在这里http://blog.csdn.net/Eddie005/archive/2004/11/09/173429.aspx
      

  5.   

    Eddie005(♂) 暴赱 『零零伍』(︶︵︶) ,你好,很感谢你在csdn中给与的帮助,
    由于我是初学.net,所以还有个问题想请教一下,
    你生成的表格里的数据(就是:张三 100 200 300)是怎么显示出来的,是静态数据马??还是动态数据,怎么弄??
    可不可给个简单的完整例子??
      

  6.   

    如果你不理解上面的例子
    你可以不用datagrid
    动态生成html表格就是在.cs文件中输出一段html代码
    这个比较容易吧?~~~~~~~比如在前面有个runat=server的divdiv.innerhtml = "<table><tr><td>这里是你的数据</td></tr></table>"
    这样你想要什么格式的都可以
      

  7.   

    楼上说的对,在.cs文件中输出一段html代码页眉的月份是固定的吗???还是根据查询的时间来确定?
      

  8.   

    引用:
    lovefootball(蟑螂)
    如果你不理解上面的例子
    你可以不用datagrid
    动态生成html表格就是在.cs文件中输出一段html代码
    这个比较容易吧?~~~~~~~比如在前面有个runat=server的divdiv.innerhtml = "<table><tr><td>这里是你的数据</td></tr></table>"
    这样你想要什么格式的都可以
    ————————————————————————————————————————
    问题时月份是根据查询的时间来确定的,而且项目名称,部门名称也都是根据查询出来的,
    如果用你的方法怎么弄呢???