模拟excel添加删除行或列,同时渲染各个tr td的id,以做取值进行各种运算.

此控件是模拟excel进行添加删除行或者列。同时可以进行各单元格之间的运算,比如=SUM(A1,A3)就表示相加,操作跟excel类似,

html代码如下:

js代码如下:

 1      $("#event_table tbody,#event_div").bind("contextmenu",function(e){        //禁止鼠标右击弹出菜单
 2               return false;
 3         });
 4         $(document).mousedown(function(e){                                        //左击任意位置隐藏自定义菜单
 5             if(1 == e.which){
 6                 if($(e.target)[0].id==‘addrow‘||$(e.target)[0].id==‘addcol‘||$(e.target)[0].id==‘delcol‘||$(e.target)[0].id==‘delrow‘)
 7                 {
 8                     return false;
 9                 }else{
10                     $(‘#event_div‘).css(‘display‘,‘none‘);
11                 };
12             };
13         });
14         var celindex;
15         var rowindex;
16         var headNub = new Array();
17         headNub = [‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘I‘,‘J‘,‘K‘,‘L‘,‘M‘,‘N‘,‘O‘,‘P‘,‘Q‘,‘R‘,‘S‘,‘T‘,‘U‘,‘V‘,‘W‘,‘X‘,‘Y‘,‘Z‘];
18         var event_divFn = function(e){                                            //右击鼠标,自定义菜单显示位置,同时获取当前点击的单元格
19             if(3 == e.which){
20                 var pointX = e.pageX;
21                 var pointY = e.pageY;
22                 $(‘#event_div‘).css(‘display‘,‘block‘);
23                 $(‘#event_div‘).css(‘left‘,pointX);
24                 $(‘#event_div‘).css(‘top‘,pointY);
25                 celindex = $(e.target)[0].cellIndex;
26                 rowindex = $(e.target).parent()[0].rowIndex;
27             };
28         };
29         var autoFn = function(){                                                //渲染整个table tr td的id
30             for (var l = 0; l < $(‘#event_table tbody tr‘).length; l++) {
31                 $($(‘#event_table tbody tr‘)[l]).attr(‘id‘,‘row_‘+(l+1));
32                 $($(‘#event_table tbody tr td:first-child‘)[l]).attr(‘class‘,‘td-hev fixed‘);
33                 $($(‘#event_table tbody tr td:first-child‘)[l]).css(‘text-align‘,‘center‘);
34                 $($(‘#event_table tbody tr td:first-child‘)[l]).html(l+1);
35                 for (var m = 0; m < $($(‘#event_table tbody tr‘)[l]).children().length; m++) {
36                     $($($(‘#event_table tbody tr‘)[l]).children().not(‘.fixed‘)[m]).attr(‘id‘,headNub[m]+(l+1));
37                 };
38             };
39             for (var p = 0; p < $(‘#event_table thead td‘).not(‘.frist_td‘).length; p++) {
40                 $($(‘#event_table thead td‘).not(‘.frist_td‘)[p]).attr(‘id‘,‘col_‘+headNub[p]);
41                 $($(‘#event_table thead td‘).not(‘.frist_td‘)[p]).html(headNub[p]);
42                 $($(‘#event_table thead td‘).not(‘.frist_td‘)[p]).css(‘text-align‘,‘center‘);
43             };
44         };
45         $("#event_table tbody").mousedown(event_divFn);
46         $(‘#addrow‘).click(function(){                                            //插入行
47             tdHtml = ‘‘;
48             for (var j = 0; j < $($(‘#event_table tr‘)[rowindex]).children().length; j++) {
49                 tdHtml+=‘<td style="text-align:left;">add</td>‘
50             };
51             $($(‘#event_table tr‘)[rowindex]).after(‘<tr>‘+tdHtml+‘</td>‘);
52             autoFn();
53             $(‘#event_div‘).css(‘display‘,‘none‘);
54         });
55         $(‘#addcol‘).click(function(){                                            //插入列
56             for (var i = 0; i < $(‘#event_table tr‘).length; i++) {
57                 $($($(‘#event_table tr‘)[i]).children()[celindex]).after(‘<td style="text-align:left;">add</td>‘);
58             };
59             autoFn();
60             $(‘#event_div‘).css(‘display‘,‘none‘);
61         });
62         $(‘#delrow‘).click(function(){                                            //删除行
63             $($(‘#event_table tr‘)[rowindex]).remove();
64             autoFn();
65             $(‘#event_div‘).css(‘display‘,‘none‘);
66         });
67         $(‘#delcol‘).click(function(){                                            //删除列
68             for (var i = 0; i < $(‘#event_table tr‘).length; i++) {
69                 $($($(‘#event_table tr‘)[i]).children()[celindex]).remove();
70             };
71             autoFn();
72             $(‘#event_div‘).css(‘display‘,‘none‘);
73         });
时间: 2024-10-11 21:54:18

模拟excel添加删除行或列,同时渲染各个tr td的id,以做取值进行各种运算.的相关文章

模拟Excel同一列相同值的单元格合并

背景 项目中有一个查询工作量,可以将查询的结果导出到Excel表中.在Excel工具中,有一个合并居中功能,可以将选中的单元格合并成一个大的单元格.现在需要在程序中直接实现查询结果的汇总, 问题分析 话不多说,上图分析: 如图,对于第一列,前三行的值都为A,那么就是需要执行合并.与此同时,1-3行后面的列采取同样的措施,约定前6列(下标0-5). 手动对1-3列进行分析的结果,如图,有点花哨!!! 可以看到结果中,对于整个1-3行后继的列操作依然如此. 这里要突出讲一下第3列(值为R),该列全部

网页中模拟Excel电子表格实例分享

原文来自http://www.6excel.com/doc/20049 一.电子表格中用到的快捷键: ← → ↑ ↓  :左,右,上,下 Home :当前行的第一列 End  :当前行的最后一列 Shift+Home :表格的第一列 Shift+End:表格的最后一列 如图: 代码如下: <%@ page language="java" pageEncoding="UTF-8"%><html>  <head>    <tit

解决读取Excel表格中某列数据为空的问题 c#

解决同一列中“字符串”和“数字”两种格式同时存在,读取时,不能正确显示“字符串”格式的问题:set xlsconn=CreateObject("ADODB.Connection") xlsconn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.mappath(xlspath)&";Extended Properties=""Excel 8.0;HD

DataGrid添加ComboBox模板列

首先在添加一个模板列 <DataGrid.Columns> <DataGridTemplateColumn Header="ComboBox模板列" > <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=SelectedTypeReso

DevExpress XtraGrid数据绑定:添加非绑定列

在本示例中,假设XtraGrid网格已被绑定到NWIND数据库的[Order Details]表中.grid 网格中包含 "Quantity", "UnitPrice" 和 "Discount" 列,并且这几列已被绑定到数据库表的相应字段中.下面的例子主要演示如何为gird网格添加一个非绑定列,从而显示根据Quantity*UnitPrice*(1-Discount)公式计算出来的每个订单的金额. 代码如下: C# using DevExpres

jQuery可以计算的表单,包括单选改变价格,select改变价格,动态添加删除行计算

jQuery可以计算的表单,包括单选改变价格,select改变价格,动态添加删除行计算 各种表单情况的计算 演示 JavaScript Code <script type="text/javascript"> var currentRow = 3; $(document).ready(function(){ $('#calx').calx(); $('#add_item').click(function(){ var $calx = $('#calx'); currentR

treeview自动从表中添加标题和列值做目录的方法2

treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首先界面上添加treeview组件,然后在treeview的onchange事件里这样写: 因为要用到定义个过程,需要在接口声明里引用 private { Private declarations } /// <summary> /// 刷新左侧treeView /// </summary&g

如何模拟登陆添加了CSRF保护的网站

上次写了篇文章,内容是如何利用WebClient模拟登陆CSRF控制的网站,回复中有人还是不理解,现在另开一篇,打算说说用Python如何来登陆. 开写之前,先说下为什么webrequest不行,常规情况下,我们在利用webrequest的时候,都是如下的形式: 1 string url = "loginurl"; 2 StringBuilder sb = new StringBuilder(); 3 sb.Append("username=un"); 4 sb.A

网格部件添加表达式计算列使用介绍

度量快速开发平台的网格部件中,可以在界面上添加虚拟的计算列,假设一个业务中有 单价,有数量字段,但是没用总价这个字段,则可以在界面上通过添加表达式计算列加上. 添加表达式计算列,可以根据不同的业务需求添加计算列. 语法: 网格部件名称.AddExpressionColumn("columnName","[基本工资]*0.2",2) 添加表达式计算列,第一个参数为列名,第二个参数为计算列表达式.第三个参数为列类型:1:整数,2:数字,3:时间,4:字符串,5:布尔,6