asp.net真正的网络Excel

Posted on 2007-02-08 16:00  Herian  阅读(433)  评论(0)    收藏  举报
   前段时间整理电脑上的资源,有些代码还是比较可以的。现在拿上来给大家一起分享。
  
以前在网上也搜索过网格之类的东西。但是很多都不能满足特定的需求。所以在不得已的情况下自己就开始着手这一块的东东。只是没有打包成一个dll。如果有哪位将它打包成为一个dll,请发送一份给我。
  
1、需求:
     
在网格中希望能够出现竖的滚动条,部分横的滚动条。当移动横的滚动条的时候部分列滚动。当滚动竖的滚动条的时候,除去标题和统计行不动外的所有数据滚动。了解Excel的人基本上都会知道的就像图(1)一样。  
     
    asp.net
中的组件gridview功能非常强大,能够完成很多功能,但是对于此种情况还是很难进行处理的。在网上搜索的时候 ,可以将gridview  放在Panel中为实现两个滚动条。但是在某些特定的情况下,滚动滚动条的时候,标题必须的看见,而在做网上工资表的时候,其中的一个列也是必须见到的,以防止输错数字。在这种情况下,Panel就满足不了了。
     
 
2、解决思路:
      1)
GridView功能强大在数据邦定的时候非常方便,所以在数据绑定的时候选用GridView
      2)
、根据显示需求,我们能否将GridView分成几块来考虑呢?如果能够将GridView分开控制,那么问题就彻底解决了。例如分成固定列、活动列、固定列数据块、活动列数据块、固定列统计行、活动列统计行。基本模型如下。
   
 

 

3、处理编码:
     1)
、脚本编写。我记得javascript 中有一个函数cloneNode(true) ,这个函数的功能就是对象的克隆。在脚本语言中,我们可以将GridView看成一个表格。第一行是标题,最后一行是统计行。那么我们就开始编写代码了。
         
第一步:
     
定义全局变量。也就是需要分割的各个层。
   
 1//放置固定列标题的层
 2var divFixColumnElement ; 
 3//放置固定列内容的层 
 4var divFixColumnValue ;
 5//放置活动列标题的层
 6var divActiveColumName ;
 7//放置活动列内容的层
 8var divActiveColumnValue;
 9//放置活动列统计行数据的层
10var divActiveFootValue;
11//放置固定列统计行数据的层
12var divFixFootValue;
13

     第二步:
      
分别得到各个内容的值。以固定列与固定列内容为例子
  
..

第三步:

     设置固定列的每列的宽度

..

第四步:

      

1divFixColumnElement = $Element(divFixColumnID);
2divFixColumnElement.appendChild(FixCol); 
3divFixColumnElement.style.width = fixCellWidth;
4

第五步:

    设置滚动条的联动。

    divActiveColumnValue.onscroll=ScrolValueBar;
    最后一步:
    清除GridView的所有数据。

    2)、界面设置:

   在界面上放置一个表格,同时放置相应的6Panel,也就是我们要分割的6个块。
  

    3)、函数调用:
    
  

    4)CS数据绑定:

              this.GridView1.DataSource = dt.DefaultView;

          this.GridView1.DataBind();

       5)、运行效果:如图
      
    6)、功能扩充:
     可能活动列的某一列的数据长度很长,也许会引起整个表格不对齐的效果,并且非常的难看。你可以将活动列内容的数据放在TextBox里面就很好的处理了所有问题。界面非常好看,但是在有TextBox的情况下GridView 的数据导出可能会存在一定问题的。呵呵,这个问题网上也有很多的解决方案。大家去解决吧。

 

    现在就下载源代码

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3