EXTJS GridPanel 右键复制当前选中单元格

轻松搞定ExtJS(高清,中文,可复制,语法+例子更易懂) 第01章:序 第02章:准备与资源 第03章:Ext OOP基础 第04章:消息框 第05章:页面与脚本完全分离 第06章:元素操作与模板 第07章:格式化 第08章:Extjs组件结构 第09章:按钮与日期选择器 第10章:数据与ComboBox 第11章 立即下载
EXTJS中复制Grid中当前单元格的内容是一个比较常见的需求,最常见的解决方法就是添加新的css样式,具体可以参考:http://blog.youkuaiyun.com/dy_paradise/article/details/5212389 

       其实呢不用这么麻烦的,EXTJS API其实提供了相应的事件让开发者可以通过添加监听事件来到达选中当前单元格并取得当前单元格的内容。下面以右击为例(左键单击相同),具体的实现功能是右键点击当前单元格选中当前单元格并弹出右键菜单,右键菜单有复制、修改和删除3个常见功能,具体效果如下:


1、首先实现一个右键菜单(gridpanel实现略过)

[javascript] view plain copy
  1. var rightMenu = new Ext.menu.Menu( {  
  2.     id : 'rightClickCont',  
  3.     items : [{  
  4.         id:'rMenu1',  
  5.         text:'复 制',  
  6.         icon:'../img/icon/copy.png',  
  7.         handler:copy  
  8.         },{  
  9.         id:'rMenu2',  
  10.         text:'修 改',  
  11.         icon:'../img/icon/modify.png',  
  12.         handler:modify  
  13.         }, {  
  14.         id:'rMenu3',  
  15.         text:'删 除',  
  16.         icon:'../img/icon/clear.png',  
  17.         handler:del  
  18.         }]  
  19. });  

2、为gird添加监听事件(注意:下面语句写在Ext.onReady(function(){}中)

[javascript] view plain copy
  1. //右击行触发事件  
  2. gridPanel.addListener('rowcontextmenu', rightClickFn);  

        这里的'rowcontextmenu'即右击行(row)时触发,使用这个事件的目的是为了取得当前行的主键,以便实现修改和删除功能,若只是纯粹想实现右键复制的功能可以不用添加这个事件,后文介绍。

3、实现监听事件的函数rightClickFn

[javascript] view plain copy
  1. function rightClickFn(gridPanel, rowIndex, e) {  
  2.     e.preventDefault();  
  3.     rightMenu.showAt(e.getXY());  
  4.     //gridpanel默认右击是不会选择当前行的,所以必须添加这句代码  
  5.     gridPanel.getSelectionModel().selectRow(rowIndex);  
  6. }  

4、实现删除和修改功能

     这里可以根据以下代码取得当前行的数据:

[javascript] view plain copy
  1. var record = gridPanel.getSelectionModel().getSelected();  

   功能的具体实现不是本文的在重点,请按照需求自己实现。但是这里可以给你一个简单的修改功能的模块供大家参考:

[javascript] view plain copy
  1. function modify(rowIndex) {  
  2.     var record = gridPanel.getSelectionModel().getSelected();  
  3.     //以下代码为点击修改后带出该条记录信息  
  4.     Ext.getCmp("title").setValue(record.get("title"));  
  5.     if(record == undefined) {  
  6.         Ext.Msg.alert('提示信息','未选择任何数据!');  
  7.     }  
  8.     else {  
  9.         var win = new Register.MicWin({  
  10.             title:"修改文章",  
  11.             buttons:[{  
  12.                  text:"确 定",  
  13.                  handler:function() {  
  14.                      Ext.Ajax.request({  
  15.                          url:'article!updateArticle.action',  
  16.                          params:{  
  17.                             //传递参数  
  18.                          },  
  19.                          success:function(request){  
  20.                             Ext.Msg.alert('提示信息','文章修改成功!');  
  21.                             win.close();  
  22.                             store.reload();  
  23.                         },    
  24.                         failure:function(){  
  25.                             Ext.Msg.alert('错误信息','系统错误');  
  26.                         }    
  27.                     })  
  28.                  }                  
  29.                  },{  
  30.                     text:"取 消",  
  31.                     handler:function(){//点击时触发的事件      
  32.                         win.close();      
  33.                     }  
  34.                  }]  
  35.         });  
  36.         win.show();  
  37.     }  
  38. }  

5、为grid添加监听单元格事件:

[javascript] view plain copy
  1. gridPanel.addListener('cellcontextmenu',cellclick);  

        这里的'cellcontextmenu'即右击单元格(cell)时触发,然后实现cellclick函数。注意这里的cellclick()函数与上文中rightClickFn()函数的参数,可以看到这里的参数多了一个columnIndex,根据columnIndex来定位单元格的位置。根据以下代码可以取得当前单元格的值。

[javascript] view plain copy
  1. //获取选中行选中列的值    
  2. function cellclick(grid, rowIndex, columnIndex, e) {     
  3.     var record = grid.getStore().getAt(rowIndex);  
  4.     var fieldName = grid.getColumnModel().getDataIndex(columnIndex);  
  5.        //info为一个全局变量   
  6.     info = record.get(fieldName);  
  7. }  

6、实现复制功能

[javascript] view plain copy
  1. function copy() {  
  2.     var record = gridPanel.getSelectionModel().getSelected();  
  3.     if(record == undefined) {  
  4.         Ext.Msg.alert('提示信息','未选择任何数据!');  
  5.     }  
  6.     else {  
  7.         copyToClipboard(info);  
  8.      }  
  9. }  

        到这里所有的功能基本上就全部实现了,不用添加新的css也可以解决这个问题,copyToClipboard方法的代码为网上拷贝,具体实现下面给出有具体代码,大家可以参考。

[javascript] view plain copy
  1. function copyToClipboard(txt) {    
  2.      if(window.clipboardData) {     
  3.              window.clipboardData.clearData();     
  4.              window.clipboardData.setData("Text", txt);     
  5.      } else if(navigator.userAgent.indexOf("Opera") != -1) {     
  6.           window.location = txt;     
  7.      } else if (window.netscape) {     
  8.           try {     
  9.                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");     
  10.           } catch (e) {     
  11.                alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");     
  12.           }     
  13.           var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);     
  14.           if (!clip)     
  15.                return;     
  16.           var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);     
  17.           if (!trans)     
  18.                return;     
  19.           trans.addDataFlavor('text/unicode');     
  20.           var str = new Object();     
  21.           var len = new Object();     
  22.           var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);     
  23.           var copytext = txt;     
  24.           str.data = copytext;     
  25.           trans.setTransferData("text/unicode",str,copytext.length*2);     
  26.           var clipid = Components.interfaces.nsIClipboard;     
  27.           if (!clip)     
  28.                return false;     
  29.           clip.setData(trans,null,clipid.kGlobalClipboard);     
  30.      }     
  31. }   


本文转自:http://blog.youkuaiyun.com/csc0211/article/details/7611876


Ext.grid.GridPanel右键菜单 右键菜单的资料,代码已经详细描写。请仿照文件中所描述即可使用,不限于EXT4.0以上版本使用。 立即下载

相关推荐

ExtJs grid行 右键菜单的两种方法

ExtJs grid行 右键菜单的两种方法,需要用extjs制作右键菜单的朋友可以参考下。

Extjs gridPanel 选中的行创建右键菜单

在这下边: 方法一 代码如下:     http://www.w3.org/1999/xhtml">    无标题页              .panel_icon11 { background-image:url(images/first.gif)}  .center_icon { background-image:url(images/center.p

Cherry_tly的专栏 916

extjs表格文本启用选择复制功能具体实现

extjs提供了方便的表格组件grid供使用,但是默认情况下表格中的文本是不能被选中的,自然也是无法复制的。 而选择复制文本的需要也是很平常的,于是我们就需要自己动手来解决这个问题,实现extjs的grid文本选择复制功能。 说明一点,文中所列出的代码片断都是在当前ext 4.0.2a版本下的,其它版本未做测试,请自行斟酌。 首先自定义一下样式,来覆盖默认的css样式: 代码如下: <style type=”text/css”> .x-selectable, .x-selectable * { -moz-user-select: text!important; -khtml-user-sel

Extjs 设置grid文本允许复制

添加 enableTextSelection:true viewConfig:{ enableTextSelection:true } Ext.create('Ext.grid.Panel', { title: 'Simpsons', store: Ext.data.StoreManager.lookup('simpsonsStore'), columns:...

西蒙老爷的博客 1369

从零到一:Ollama工具在RK3588上的深度优化实践

本文详细介绍了如何在RK3588开发板上深度优化Ollama工具,以高效运行DeepSeek模型。通过CPU与NPU负载平衡、模型量化、温度控制等策略,显著提升性能并降低功耗,适用于边缘计算场景。文章提供了具体的配置命令和优化方案,帮助开发者充分发挥RK3588的硬件潜力。

rgv23456789的博客 311

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1169

Extjs右键菜單

Extjs右键菜單

x1043556915的博客 275

量化交易如何利用涨停板策略收割散户

量化交易通过算法筛选特定特征的股票,在早盘建立底仓后,利用大单拉升制造抢筹假象,吸引散户跟风买入。这种策略利用了散户的认知偏差,如锚定效应和从众心理,导致次日低开闷杀。从技术实现来看,量化策略通过控制买入量、隐藏真实意图等手段,精准执行隔日砸策略。对于短线交易者而言,理解量化资金的运作逻辑和识别危险涨停板的特征至关重要,这包括观察封板时间、盘口挂单、量价关系等多维度数据。在算法主导的市场中,散户需要升级交易工具和策略,从预测走势转向应对走势,才能避免成为量化策略的牺牲品。

weixin_33046983的博客 288

Extjs页面实现行复制功能

在使用Extjs编写页面过程中,需要使用到行复制。但是Extjs没有好的支持。 自己做了一个扩展。需要用到一个复制内容到剪贴板的js文件。 主要代码: 重写GridPanel,打开鼠标右键事件,添加一个右键菜单。 其中Clipboard是需要加载的js。 Ext.override(Ext.grid.GridPanel, { stripeRows: true, colu

yqc921015的博客 6602

【零基础学习CAPL】——弹窗信息提示

不用手动制作Panel窗口,直接使用CAPL脚本实现弹窗提示。//没有wait超时,等待测试人员确认//有wait超时,对话框在超时后自动终止//有wait超时,可以显示一个资源,即对话框可以显示额外的信息。/*参数说明text:显示在弹窗中的内容,长度限制在4096字符timeout:弹窗自动结束的时间,单位:ms。若为0,则无超时控制heading:对话框文本上方的标题。字符串最大长度限制在256个字符。resource:URL或文件路径。字符串的最大长度是有限的(512个字符)。

LOVE135149的博客 264

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

ExtJs疑难杂症之GridPanel单元格不能选中复制问题

Ext.grid.GridPanel有一个重大缺陷,就是单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。分析:用IE Developer Toolbar打开ExtJs输出的代码研究了一下,发现每个单元格的div都有一个属性:unselectable="on",看来是css在作怪。版本:2.2解决办法:extJs官方论坛上有具体的解决办法,比较可行的如下。s

Kevin的程序人生 6717

fatal: unable to access ‘https://github.com/Stability-AI/stablediffusion.git/‘解决方案

本文主要介绍在安装 stable-diffusion-webui 时出现的 fatal: unable to access 'https://github.com/Stability-AI/stablediffusion.git/': Failed to connect to github.com port 443 after 21071 ms: Couldn't connect to server 问题的解决方案,希望能对你有所帮助。

水滴的博客 5685

[转]ExtJs疑难杂症之GridPanel单元格不能选中复制问题

Ext.grid.GridPanel有一个重大缺陷,就是单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。 分析: 用IE Developer Toolbar打开ExtJs输出的代码研究了一下,发现每个单元格的div都有一个属性:unselectable="on",看来是css在作怪。 版本: 2.2 解决办法: extJs官方论坛上有具体的解决办法,比较可行的如下。 step

xiangliling的专栏 375

RK3588与FocalTech触摸屏代码适配全解析:从原理到实战

摘要:本文详细介绍了瑞芯微RK3588处理器与FocalTech触摸屏的适配过程,包括硬件特性、驱动加载、设备树配置和常见问题解决方案。RK3588作为8nm工艺的高性能处理器,具备强大的计算能力和丰富的接口资源;FocalTech触摸屏则采用电容式技术,支持I2C/SPI接口。适配关键步骤包括驱动程序加载、硬件连接检查、设备树配置和内核版本兼容性处理,并提供了代码示例和问题排查方法。随着嵌入式设备智能化发展,该适配技术将持续优化,为智能交互提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 272

Megatron-LM中的TP、PP、DP、SP、CP并行

SP主要优化的是激活内存,它沿序列维度切分部分激活,适用于较短序列并行。CP主要解决的是长序列的显存问题,它沿序列维度切分所有激活和输入,并且对注意力机制也进行并行处理。二者可以组合使用,特别是当 TP > 1 并且需要处理长序列时,通过启用 SP 和 CP 可以最大化地优化内存使用和加速计算。

u013250861的博客 861

ExtJs4.0 GridPanel 单元格、数据内容不能选中复制的解决办法。

  在extjs2.0的Ext.grid.GridPanel单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。似乎也没提供属性配置。在网上找到的一些解决办法但不适用于ExtJs4.0。研究半天,覆盖了css,但只在非ie的浏览器有效。修改了extjs源码才解决了在ie的问题。 1、css代码: <style type="text/css"> ...

aosd53169的博客 223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ext不能选中复制属性_ExtJs4.0 GridPanel 单元格、数据内容不能选中复制的解决办法。...

在extjs2.0的Ext.grid.GridPanel单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。似乎也没提供属性配置。在网上找到的一些解决办法但不适用于ExtJs4.0。研究半天,覆盖了css,但只在非ie的浏览器有效。修改了extjs源码才解决了在ie的问题。1、css代码:.x-grid-row{line-height:13px;vertical-align:top;pa...

weixin_39924481的博客 285

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ExtJs GridPanel单元格不能选中复制

Ext.grid.GridPanel有一个重大缺陷,就是单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。 分析: 用IE Developer Toolbar打开ExtJs输出的代码研究了一下,发现每个单元格的div都有一个属性:unselectable="on",看来是css在作怪。 版本: 2.2(版本3.2.1测试通过) 解决办法: extJs官方论坛上有具体的解决办法,比

星空 1393

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ExtJs的Ext.grid.GridPanel不能选择复制表格中的内容解决方案

今天遇到grid复制的问题,在网上找到了一个解决办法,只需改下CSS和JS,给大家分享一下: 本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/dy_paradise/archive/2010/01/19/5212389.aspx Ext.grid.GridPanel有一个重大缺陷,就是单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。 分析:...

diadangai6018的博客 214

ext不能选中复制属性_如何实现Extjs的grid单元格只让选择(即可以复制单元格内容)但是不让修改?...

自己动手丰衣足食啊,还得自己来解决 在extjs2.0的Ext.grid.GridPanel单元格的内容不能选中,没法选中就没法复制,给用户带来很多不便。似乎也没提供属性配置。在网上找到的一些解决办法但不适用于ExtJs4.0。研究半天,覆盖了css,但只在非ie的浏览器有效。修改了extjs源码才解决了在ie的问题。1、css代码:.x-grid-row{line-height:13px;ver...

weixin_33882158的博客 288
上一篇: Hibernate 注册自定义类型
下一篇: oracle 替换列中null值
without0815
博客等级 码龄15年 107粉丝 79原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值