《仔仔细细分析Ext》 第N-2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮...

本文主要是介绍《仔仔细细分析Ext》 第N-2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《仔仔细细分析Ext》 第N-2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮

EXT QQ JavaScript 脚本 工作

导言:
      这是一篇学习笔记。
      虽然用GridPanel来展示数据稍微有那么一点死板,从视觉效果上看,呵呵。
      但是,有时候还是不得不用。
      相信拿GridPanel做基本的数据展示大家都是没有问题的,实在不记得还可以参考/examples/grid目录下的grid3.html这个例子(版本:Ext2.2)。
      这个里面有个小难点,我刚开始学Ext的时候碰到过,后来也有人问过我。需要实现的界面格式是这样的:
    


 

      或者用图标的形式:
    


 
   
      其实这里说的“小难点”指的是每条数据后面的那几个链接或者小按钮。说实话之前做过这个界面,但是这部分代码是别人写的,我以为很简单,就没去看。前段时间有人问我这个问题,我硬生生一点说不出来,汗。。。今天有点空,仔细看了一把,很熟悉的大侠就不用看了,时间宝贵,呵呵。
下面来小分析一把这种展示界面,权且称作“Ext标准grid展示”吧。

 


分析:
    


 
    如图所示,这种界面分几大块,这里只关注右侧的这些链接或者按钮的实现,其它的部分是很简单的,所以略去。
    第一种做法:使用渲染器renderer
    关注一下ColumnModel的写法就可以了。

Js代码   收藏代码
  1. var cm=new Ext.grid.ColumnModel([  
  2.     sm,  
  3.     rowNum,  
  4.     {header: "姓名", dataIndex:'name',width: 100, sortable: true},  
  5.     {header: "年龄", dataIndex:'age',width: 50, sortable: true},  
  6.     {header: "工作", dataIndex:'work',width: 150, sortable: true},  
  7.     {header: "公司", dataIndex:'company',width: 100, sortable: true},  
  8.     {header: "所属行业", dataIndex:'industry',width: 80, sortable: true},  
  9.     {header: "群", dataIndex:'QQ',width:150, sortable: true},  
  10.     {header: "操作", dataIndex:'id',width:150, sortable: true,renderer:function(value,meta,record){  
  11.           var resultStr = "<div class='controlBtn'>" +  
  12.                             "<a href='javascript:void("+record.get('id')+");' class='alarm_detail'>详细</a>&nbsp;&nbsp;&nbsp;& nbsp;" +  
  13.                             "<a href='javascript:void("+record.get('id')+");' class='alarm_detail'>删除</a>&nbsp;&nbsp;&nbsp;& nbsp;" +  
  14.                             "<a href='javascript:void("+record.get('id')+");' class='alarm_detail'>图表</a>&nbsp;&nbsp;&nbsp;& nbsp;" +  
  15.                             "<a href='javascript:void("+record.get('id')+");' class='alarm_detail'>曲线</a>&nbsp;&nbsp;&nbsp;& nbsp;" +  
  16.                             "</div>";  
  17.           return resultStr;  
  18.         }  
  19.     }  
  20. ]);  

 

     这个写法的优点是:代码比较优雅,不显乱;
     缺点是:这里面有个作用域的问题。因为做成链接这种形式,事件不是用Ext的实现来绑定的,而实际上使用了原生的事件,所以在点击之后的处理上稍微麻烦。
    2009-07-27日补充:这里是我糊涂了,忘了原生事件的作用域,这个问题可以用如下的方式来解决,幸亏“天猪”提醒,代码如下:

Js代码   收藏代码
  1. /** 
  2.  * 点击操作:注意这个地方的作用域问题,因为<a href="#" οnclick="dleUser()"> 
  3.  * 这里的onclick作用域是window 
  4.  */  
  5. window.delUser=function(userName){  
  6.     alert("开始删除"+userName);  
  7. }  
  8.   
  9. /** 
  10.  * 渲染器 
  11.  */  
  12. var opeartionRender=function(userName){  
  13.     return '<a href="#" οnclick="delUser('+userName+')">删除</a>';  
  14. }  
  15.   
  16. /** 
  17.  * 数据列模型 
  18.  */  
  19. var cm=new Ext.grid.ColumnModel([  
  20.     sm,  
  21.     rowNum,  
  22.     {header: "姓名", dataIndex:'name',width: 100, sortable: true},  
  23.     {header: "年龄", dataIndex:'age',width: 50, sortable: true},  
  24.     {header: "工作", dataIndex:'work',width: 150, sortable: true},  
  25.     {header: "公司", dataIndex:'company',width: 100, sortable: true},  
  26.     {header: "所属行业", dataIndex:'industry',width: 80, sortable: true},  
  27.     {header: "群", dataIndex:'QQ',width:150, sortable: true},  
  28. {header: "操作", dataIndex:'name',width:150, sortable: true,renderer:opeartionRender}  
  29. ]);  
 


   
     第二种做法:使用别人封装好的Ext.ux.RowActions组件
     整体代码和需要的资源见附件。
    (注意:附件里面有agrid.js和agrid2.js两个js,一次导入一个来查看两种不同的实现效果。图标所用的图片就自己找吧。导入Ext和演示脚本的相对路径请改成你本机的有效路径)
     RowActions的问题是代码不够优雅,按钮的那些东西硬生生地入侵到了cm和gridPanel里面去了,更过份的是每条数据里面都要给按钮相关的参数,实在是不好看。
     这两种实现方式各有优点和缺点,只能看哪里合适咯,呵呵。

结语:
    今天下午在和天猪讨论的时候,他告诉我可以拿renderer来做。
    说实话,我不喜欢上来就继承,之前也有写继承,老感觉有些说不出的毛病,呵呵。拿一些工具组合组合,小界面也能出来,做成个小函数代码也不多,改起来还方便。
    JE论坛Ext板块的置顶贴的牛人建议大家“建立自己的工具箱”,这个小界面就当做我的一个小工具咯。
    这篇小笔记就这么多,希望对你有点帮助。

转载于:https://www.cnblogs.com/holyes/archive/2012/06/26/d6e37e5af1a2d00122fe90edf66f4b91.html

这篇关于《仔仔细细分析Ext》 第N-2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587391

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE