`
atian25
  • 浏览: 467737 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS_FAQ_Grid#Behavior

阅读更多

前言,学习ExtJS Grid的新手,官方的这篇FAQ是必读的.

顺手翻译了一小点,大概了解就ok了,挺生硬的,呵呵...

 

翻译自:http://extjs.com/learn/Ext_FAQ_Grid#Behavior

 

5.行为

 

5.1 单元格的链接

 

>方法1: 自定义渲染方法

var yourColumn = {


   header: "Company",


   dataIndex: 'company',


   renderer: function(value, metaData, record, rowIndex, colIndex, store) {


      //在这里面可以按你自己的逻辑组成html然后返回


      return '<a href="http://www.yourURL.com/" target="_blank">'


             + value +'</a>';


   }


}

 

>方法2: 监听Ext.grid.RowSelectionModel的rowselect事件

function handleRowSelect(selectionModel, rowIndex, selectedRecord) {


    //assuming the record has a field named 'url' or build it as you need to


    var url = selectedRecord.get('url');


    //if you want to open another window


    window.open(url);


}


grid.getSelectionModel().on('rowselect', handleRowSelect);

 

5.2 为特殊的单元格添加点击事件

 

>除了下面将介绍的方法外,你还可以考虑下Saki提供的扩展:rowactions和cellactions,在http://www.extjs.eu 可找到

 

>如果你用的是编辑表格,则默认的选择模型是cell selection model,所以你可以监听beforecellselect和cellselect事件.

  它会传递点击的行和列的index。其中行index可以用来找到点击的field。(需要注意,用户有可能会对行进行排序,所以直接用行index来寻找field是不安全的,最好用id来索引)

 

>对Grid的cellclick事件添加一个监听器

当点击的时候,传递row index 和column index 给监听器。其中column index可以用来确定是点击的是哪个field。
(用户有可能会对改变行的位置,如拖拽,所以用column index作为field index是不安全的)

 

cellclick事件的处理函数可以如下代码,找到一些相关的信息:

function(grid, rowIndex, columnIndex, e) {


        // Get the Record for the row


        var record = grid.getStore().getAt(rowIndex);


        // Get field name for the column


        var fieldName = grid.getColumnModel().getDataIndex(columnIndex);


        var data = record.get(fieldName);


    }
 

>一个用cellclick事件切换单元格颜色的例子: http://extjs.com/forum/showthread.php?p=119718#post119718

 

>change the CSS so all cells look like an editor is active, e.g.

.x-grid3-row td.x-grid3-td-<id-of-column> {


	background-color: white;


	padding: 0;


}


.x-grid3-row td.x-grid3-td-<id-of-column> .x-grid3-cell-inner {


	border: 1px solid #a9bfd3;


	padding: 2px 3px 2px 5px;


}
 

5.3 如何添加/删除表格的某几列

   参见http://extjs.com/forum/showthread.php?p=308635#post308635

 

5.4 如何为每行记录都添加一个操作列

 

>方法1:

1)Use the array grid example in your packaged download array-grid.js

以自带例子里面的array-grid.js来示范

 

2)Add an extra column to the column model definition and a custom rendere

添加额外的一列

{header: "Controls", 
width: 60, 
sortable: false, 
renderer: function() {
    return '<div class="controlBtn">
            <img src="../shared/icons/fam/cog_edit.png"
            width="16" height="16" 
            class="control_edit">
            <img src="../shared/icons/fam/folder_go.png"
            width="16" height="16"
            class="control_go"></div>';
}, 
dataIndex: 'company'}

 

3)Then you would setup an event handler on the click event.

添加事件处理函数

grid.on('click', function(e) {
        var btn = e.getTarget('.controlBtn');        
        if (btn) {
            var t = e.getTarget();
            var v = this.getView();
            var rowIdx = v.findRowIndex(t);
            var record = this.getStore().getAt(rowIdx);            
            var control = t.className.split('_')[1];
            switch (control) {
                case 'edit':
                    console.log('edit this record - ' + record.id);
                    break;
                case 'go':
                    console.log('go to this record - ' + record.id);
                    break;
            }            
        }
    }, grid);
 

4)Add the following CSS rule in array-grid.html to give some padding and change the cursor.

<style>
   .controlBtn img {
      padding-left: 4px;
      cursor: pointer;
   }
</style>
 

 

5)Using this same method you could add as many tools as you would like in the controls section and always give them the css class "controls_{toolname}". Ideally you would break this out into an XTemplate so that you could simply pass in whatever tools you would like to use and output them on the grid as well.

 

 

>方法2:

使用RowAction这个扩展 http://extjs.com/forum/showthread.php?t=24508

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ExtJs_Wcf_Linq_PageGrid

    项目中的“ExtJs_Wcf_Linq_AllFeatureGrid_Edited_0809”文件可能包含了完整的示例代码,包括EXTJS Grid Panel的配置、WCF服务接口定义以及C#后台的数据处理逻辑。开发者可以通过阅读和学习这些代码,进一步了解如何...

    ExtJs_Wcf_Linq_PageGrid (zip)

    ExtJs_Wcf_Linq_PageGrid, zip format

    ExtJS_grid.rar_Grid javascript_extjs grid

    ExtJS Grid是一款强大的JavaScript组件,用于在Web应用中创建数据密集型的表格视图。它由Sencha公司开发,是Ext JS库的核心部分,广泛应用于企业级应用的前端开发,提供丰富的功能和高度的可定制性。这个"ExtJS_grid...

    EXT_ASP.rar_asp extjs_extjs_extjs asp_extjs+asp

    在"EXT_ASP.rar_asp extjs_extjs_extjs asp_extjs+asp"这个压缩包中,我们可以看到EXTJS与ASP结合使用的示例,用于开发一个通讯录程序,这是一个很好的学习EXTJS和ASP集成的实践项目。 首先,EXTJS的核心在于它的...

    extjs_tapestry.rar_extjs tapestry_extjs_tapestry_tapestry

    标题 "extjs_tapestry.rar_extjs tapestry_extjs_tapestry_tapestry" 暗示了这个压缩包是关于 ExtJS 和 Tapestry 两个框架整合使用的资源集合。描述指出,这些资源包含了在 Tapestry 框架中应用 ExtJS 的兼容性代码...

    extjs_asp.net.rar_extjs_extjs 网站

    例如,可以使用ExtJS的Grid Panel展示来自ASP.NET的数据,使用Form Panel进行数据的输入和提交,而这一切都通过Ajax请求与服务器进行通信。 标签"extjs"和"extjs_网站"进一步强调了这个项目的核心内容是关于ExtJS的...

    ExtJS_可编辑Grid进度条

    在“ExtJS_可编辑Grid进度条”这个主题中,我们将深入探讨如何在Grid组件中实现可编辑的进度条功能,以及这一功能的实现原理和应用场景。 首先,我们要理解Grid的基本概念。Grid在ExtJS中是一个表格视图,用于展示...

    oms.rar_OMS php_extjs_oms_php extjs_php-ext

    2. EXTJS:EXTJS是一个强大的JavaScript库,用于构建富客户端应用程序。EXTJS提供了丰富的UI组件,如表格、面板、图表等,使得开发者能够快速构建具有桌面级用户体验的Web应用。在这个OMS系统中,EXTJS可能被用来...

    extjs_simple.rar_extjs_extjs simple_extjs_simple

    ExtJS实现的用户管理界面,实现了用户的增加功能、修改功能、删除功能、查看工程。还提供了下拉列表选择框进行年龄的选择功能。

    JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str

    在标签"json_hibernate extjs json_struts_ext jsp_json_extjs struts2"中,"json_struts_ext"和"jsp_json_extjs"暗示了JSON在Struts2扩展和JSP与ExtJS之间的交互作用。可能有一个配置或者插件用于让Struts2的动作类...

    ssh_extjs.rar_extjs_extjs ssh_oracle

    标题中的"ssh_extjs.rar_extjs_extjs ssh_oracle"提到了几个关键的IT技术,它们是SSH(Spring、Struts、Hibernate)框架、ExtJS前端框架以及Oracle数据库。这里我们将深入探讨这些技术及其在Java Web开发中的应用。 ...

    ExtJs_grid.txt

    ### ExtJs Grid 使用详解 #### 一、ExtJs Grid 概览 ExtJs是一个功能强大的JavaScript框架,用于构建复杂的Web应用程序。其中,Grid是ExtJs中最常用的数据展示组件之一,它能够以表格形式显示数据,并提供了丰富的...

    php-blog.rar_extjs_extjs php_extjs php bl_php blog

    标题中的"php-blog.rar_extjs_extjs php_extjs php bl_php blog"暗示这是一个与PHP和EXTJS相关的项目,可能是用于创建一个单用户的博客系统。EXTJS是一个强大的JavaScript库,用于构建富客户端应用,而PHP是一种广泛...

    ExtJS--Windows.rar_extjs_extjs CSharp_extjs windows

    ExtJS是一种基于JavaScript的前端框架,用于构建富客户端应用程序。这个名为"ExtJS--Windows.rar"的压缩包显然是关于如何使用ExtJS来模仿Windows桌面应用的示例或教程。让我们深入探讨一下ExtJS以及如何利用它来实现...

    获取ExtjS表格的值_ExtJS_3.4cellSelectModel

    资源名称:获取ExtjS表格的值_ ExtJS_3.4 cellSelectModel资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    ExtJs_2API

    ExtJs_2API,ext初学者最佳API

    extjs_x主题样式文件

    extjs_x主题样式文件

    ExtJs_Wcf_Linq_AllFeatureGrid_Edited_0805

    Wcf_Linq_AllFeatureGrid_Edited_0805" 提供的源代码示例展示了如何结合使用ExtJS、WCF(Windows Communication Foundation)和LINQ(Language Integrated Query)技术来构建一个具备完整功能的数据网格(Grid)应用...

    extjs_3.4官方离线API

    extjs_3.4官方离线API,方便查询所有组件属性

    extjs_dwr_grid 实例(含完整源码及说明)

    DWR 和 Ext 简单例子综合 EXT 2 和 DWR 1 表格编辑控件示例(无数据库版本) EXT 2 表格编辑控件示例(静态页面,与Java无关版本) Netbeans 6 开放文档团队在线通讯录(Ext + DWR + MySQL) ...模拟DWR 引擎通过反射调用类中...

Global site tag (gtag.js) - Google Analytics