extjs grid 复制问题另一种解决方案.

之前的项目中虽然也经常使用到extjs,但或许是没有注意到,也或许是根本就没有需要用到这个功能.

前几天在和客户讨论需求时,客户说想要能够将gird表中的数据复制出来,当时没多想,感觉这功能extjs应该是支持的,应该配置一个后几个参数就能搞定的吧.可是回来后查extjs的api才发现好像根本就没有这个设置的.再回想之前的项目中,好像确实没有做过这个功能.所以赶紧就到网上找了,也找个来一些解决方案,但感觉实现起来比较麻烦,也没去试.

今天再想到这个问题时,突然一个想法在脑海中闪现,应该能够借用gird的单元格编辑功能来实现复制的效果吧.于是赶紧去测试下,结果还真可以,代码如下:

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name', 'email', 'phone'],
    data:{'items':[
        { 'name': 'Lisa',  "email":"[email protected]",  "phone":"555-111-1224"  },
        { 'name': 'Bart',  "email":"[email protected]",  "phone":"555-222-1234" },
        { 'name': 'Homer', "email":"[email protected]",  "phone":"555-222-1244"  },
        { 'name': 'Marge', "email":"[email protected]", "phone":"555-222-1254"  }
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    <span style="color:#ff6666;">plugins: [
        Ext.create('Ext.grid.plugin.CellEditing', {
            pluginId:'rowEditing',
            clicksToEdit: 1
        })
    ],</span>
    columns: [
        { text: 'Name',  dataIndex: 'name' ,
         <span style="color:#ff6666;">editor:{
             xtype: 'displayfield'
         }</span>
        },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

效果如下:

感觉效果还不错吧,

总结起来,优点很明显就是实现简单方便,支持各种版本的extjs.而确定就是不支持行复制,而且需要为每个column中都写一个editor.

extjs grid 复制问题另一种解决方案.

时间: 2024-11-07 00:43:03

extjs grid 复制问题另一种解决方案.的相关文章

extjs grid 复制问题还有一种解决方式.

之前的项目中尽管也常常使用到extjs,但也许是没有注意到,也也许是根本就没有须要用到这个功能. 前几天在和客户讨论需求时,客户说想要可以将gird表中的数据复制出来,当时没多想,感觉这功能extjs应该是支持的,应该配置一个后几个參数就能搞定的吧.但是回来后查extjs的api才发现好像根本就没有这个设置的.再回忆之前的项目中,好像确实没有做过这个功能.所以赶紧就到网上找了,也找个来一些解决方式,但感觉实现起来比較麻烦,也没去试. 今天再想到这个问题时,突然一个想法在脑海中闪现,应该可以借用g

详解MySQL双活同步复制四种解决方案

目录 基于MySQL原生复制主主同步方案 基于Galera replication方案 基于Group Replication方案 基于canal方案 对于数据实时同步,其核心是需要基于日志来实现,是可以实现准实时的数据同步,基于日志实现不会要求数据库本身在设计和实现中带来任何额外的约束. 基于MySQL原生复制主主同步方案  这是常见的方案,一般来说,中小型规模的时候,采用这种架构是最省事的. 两个节点可以采用简单的双主模式,并且使用专线连接,在master_A节点发生故障后,应用连接快速切换

三栏布局的5种解决方案及优缺点

假设高度已知,请写出三栏布局,左栏.右栏宽度300px,中间宽度自适应. 这道题本身的难度并不大,我们在布局页面的时候,写个三栏布局还是挺简单的.但是如果在面试的时候遇到这道题,就没有那么简单了.看似简单的一道题,想把它答好是不简单的.往往越简单的题越不好答.如果看到这题只想到了浮动和绝对定位,那这题你连及格都及格不了. 下面是5种三栏布局的方法. 在写布局代码之前,先写两段公共的样式,此段写在头部. 样式 <style media="screen"> html *{ pa

ListView+CheckBox两种解决方案及原因分析

最近在用ListView+CheckBox搞一个item选中的项目,我将CheckBox的focus设置为false,另我大喜的是,CheckBox竟然可以选中(窃喜中),这么简单就搞定了,因为数据量较小,也没有发现什么问题. 后来数据多了, 页面需要滑动了, 发现了一个奇怪的问题,前面明明选中了,而再次滑动回去的时候竟然变成未选中状态! 这是我刚开始写的那段错误的代码: @Override public View getView(int position, View convertView,

前端跨域问题的几种解决方案

前端跨域问题 一:同源策略 1.what's this 所谓同源是指,域名,协议,端口相同.当浏览器运行一个JS脚本时会进行同源检测,如果不同源是不能执行的. 2.源继承 来自about:blank,javascript:和data:URLs中的内容,继承了将其载入的文档所指定的源,因为它们的URL本身未指定任何关于自身源的信息. 3.变更源 变更源可以实现基础域相同的不同页面的跨域问题. 如:a.baidu.com/index.html 通过 iframe 引入 b.baidu.com/ind

Google Android API官网封杀了,没法查android技术资料的3种解决方案

1.从uhdesk上访问简化版android api在线文档(反应速度极快) http://www.uhdesk.com/simpleandroidoc/index.html 2.下载chm本地文档(19M的样子) http://www.uhdesk.com/doc/Andorid%20API%20docs.chm 3.使用完整版本android api在线文档(明显这个域名的服务器跟不上) http://www.uhdesk.com/androidoc/index.html Google An

zepto的tap事件的点透问题的几种解决方案

zepto的tap事件的点透问题的几种解决方案 zepto的tap事件点透问题分析: 1.“点透”是什么 你可能碰到过在列表页面上创建一个弹出层,弹出层有个关闭的按钮,你点了这个按钮关闭弹出层后后,这个按钮正下方的内容也会执行点击事件(或打开链接).这个被定义为这是一个“点透”现象. 在前面的项目中遇到了如下图的问题:在点击弹出来的选择组件的右上角完成后会让完成后面的input输入框聚焦,弹出输入键盘,也就是点透了 2.为什么会出现点透呢?这个需要从zepto(或者jqm)源码里面看关于tap的

ExtJS Grid 字段因为json数值前空格加载失败

今天遇到个奇葩问题,因为EXCLE数据没有去掉前空格导入之后EXTJS.Grid无法加载数据. 排错顺序: 首先检查控制台有没有报错. 在oracle中运行sql语句,检查SQL是否正确 导出json数据,并在在线json验证中验证json数据是否正确. 在上线后,当天显示正常,并进行过导出操作.怀疑近期数据出错.添加createdate筛选条件,从当天到前天倒序检查是否报错. 当天数据报错,前天数据无错.检查当天数据. 找到当天数据,检查中发现5列中文长度过长,怀疑这些列中数据有特殊字符,一列

ExtJS Grid Column Number

 {                 xtype: 'numbercolumn',                 text: '亏盈数量',                 width: 130,                 dataIndex: 'LossOrProfitNum',                 editor: {                     xtype: 'numberfield',                     minValue: 0,