• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 怀卉1097 | 发布时间: 2025-8-13 17:59| 查看数: 34| 评论数: 0|帖子模式

    extjs提供了方便的表格组件grid供使用,但是默认情况下表格中的文本是不能被选中的,自然也是无法复制的。

    而选择复制文本的需要也是很平常的,于是我们就需要自己动手来解决这个问题,实现extjs的grid文本选择复制功能。

    说明一点,文中所列出的代码片断都是在当前ext 4.0.2a版本下的,其它版本未做测试,请自行斟酌。

    首先自定义一下样式,来覆盖默认的css样式:

    <style type="text/css">
    .x-selectable, .x-selectable * {
    -moz-user-select: text!important;
    -khtml-user-select: text!important;
    }
    </style>

    复写extjs的table类,阻止鼠标选择文本的就是这个unselectable

    /**
    * override the table class
    */
    Ext.override(Ext.view.Table, {
    afterRender : function() {
    var me = this;
    me.callParent();
    me.mon(me.el, {
    scroll : me.fireBodyScroll,
    scope : me
    });
    if (!me.featuresMC && (me.featuresMC.findIndex('ftype', 'unselectable') >= 0)) {
    me.el.unselectable();
    }
    me.attachEventsForFeatures();
    }
    });

    然后再自定义一个feature,启用文本选择功能,通过替换取消unselectable样式,同时增加x-selectable样式

    /**
    * define the select feature
    */
    Ext.define('Myext.grid.SelectFeature', {
    extend : 'Ext.grid.feature.Feature',
    alias : 'feature.selectable',
    mutateMetaRowTpl : function(metaRowTpl) {
    var i, ln = metaRowTpl.length;
    for (i = 0; i < ln; i++) {
    tpl = metaRowTpl;
    tpl = tpl.replace(/x-grid-row/, 'x-grid-row x-selectable');
    tpl = tpl.replace(/x-grid-cell-inner x-unselectable/g, 'x-grid-cell-inner');
    tpl = tpl.replace(/unselectable="on"/g, '');
    metaRowTpl = tpl;
    };
    }
    });

    现在可以声明一个selectFeature了

    var selectFeature = Ext.create('Myext.grid.SelectFeature');

    需要启用文本选择的表格,在创建时添加这个feature就可以了

    Ext.create('Ext.grid.Panel', {
    title : 'grid example',
    store : gridStore, // define before
    width : 600,
    height : 300,
    features : [selectFeature],
    columns : [{
    text:'name',
    dataIndex:'name'
    }]
    // other code
    }

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表