ExtJS4.2学习(11)可拖放的表格(转)

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html

--------------------------------------------------------------------------------------------

先来看下第一个例子,通过拖放改变表格大小:

以下是完整代码:

/**
 * Grid
 * 此js演示了ExtJS之可拖放的表格:在一个表格间互相拖行
 */
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
    var columns = [
                   {header:‘编号‘,dataIndex:‘id‘},
                   {header:‘名称‘,dataIndex:‘name‘},
                   {header:‘描述‘,dataIndex:‘descn‘}
               ];

    var data = [
        [‘1‘,‘name1‘,‘descn1‘],
        [‘2‘,‘name2‘,‘descn2‘],
        [‘3‘,‘name3‘,‘descn3‘],
        [‘4‘,‘name4‘,‘descn4‘],
        [‘5‘,‘name5‘,‘descn5‘]
    ];

    var store = new Ext.data.ArrayStore({
        data: data,
        fields: [
            {name: ‘id‘},
            {name: ‘name‘},
            {name: ‘descn‘}
        ]
    });
    store.load();

    var grid = new Ext.grid.GridPanel({
        renderTo: ‘grid‘,
        store: store,
        columns: columns,
        viewConfig:{ //加入此代码可在同一个表格里拖放
            plugins:{
                ptype:‘gridviewdragdrop‘
            }
        }
    });

    //只需要加入下面代码即可实现拖放
    var rz = new Ext.Resizable(grid.getEl(),{
        wrap:true, //自动包裹
        minHeight:100, //最小高度
        pinned:true, //控制可拖放区域的显示状态
        handles:‘s‘ //设置可以拖放的方向
    });
    rz.on("resize",function(resizer,width,height,event){
        grid.setHeight(height);
    },grid);
});

来解释下属性什么意思?

Resizable()函数必须放在render之后,否则会出现问题。

第一个参数是grid,就是说这个可改变大小的区域是在div id="grid" 这个元素上起作用。

wrap:true,这个参数会在构造Resizable()函数时自动在指定id的外边包裹一层div,这样就不用在HTML里定义其他附属的div了。

minHeight:100,它限制改变的最小高度。

pinned:true,此参数控制可拖放区域的显示状态。如果值为true,则可拖放区域会一直显示在表格下方;如果值为false,只有鼠标悬停在可拖放区域上方时才会出现。具体配置取决于个人爱好。

handles:‘s‘,s即south。Ext中用东、南、西、北对应上、下、左、右,用首字母来设置可以拖放的方向。

最后别忘了注册resize事件,在拖放完成之后,表格会调用setHeight()方法修改自己的大小,re.on()函数的第3个参数是函数执行的scope。

第2个例子,在同一个表格中拖放

Ext的表格内置了对拖放的支持,所以使用起来非常方便,只需要设置gridviewdragdrop插件就行了,具体代码如下:

var grid = new Ext.grid.GridPanel({
    renderTo: ‘grid‘,
    store: store,
    columns: columns,
    viewConfig:{ //加入此代码可在同一个表格里拖放
        plugins:{
            ptype:‘gridviewdragdrop‘
        }
    }
});  

嘿嘿,现在上效果图:

什么,你觉得这样还不过瘾,记得我在文章开头提过,还可以多个表格之间相互拖拽,那么现在来看看代码:

/**
 * Grid
 * 此js演示了ExtJS之可拖放的表格:两个表格间可以互相拖放行
 */
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){  

    var store1 = new Ext.data.ArrayStore({
        data: [
            [‘01‘,‘name01‘,‘descn01‘],
            [‘02‘,‘name02‘,‘descn02‘],
            [‘03‘,‘name03‘,‘descn03‘],
            [‘04‘,‘name04‘,‘descn04‘],
            [‘05‘,‘name05‘,‘descn05‘]
        ],
        fields: [
            {name: ‘id‘},
            {name: ‘name‘},
            {name: ‘descn‘}
        ]
    });
    var store2 = new Ext.data.ArrayStore({
        data: [
            [‘11‘,‘name11‘,‘descn11‘],
            [‘12‘,‘name12‘,‘descn12‘],
            [‘13‘,‘name13‘,‘descn13‘],
            [‘14‘,‘name14‘,‘descn14‘],
            [‘15‘,‘name15‘,‘descn15‘]
        ],
        fields: [
            {name: ‘id‘},
            {name: ‘name‘},
            {name: ‘descn‘}
        ]
    });  

    store1.load();
    store2.load();  

    var columns = [
        {header:‘编号‘,dataIndex:‘id‘},
        {header:‘名称‘,dataIndex:‘name‘},
        {header:‘描述‘,dataIndex:‘descn‘}
    ];  

    var grid1 = new Ext.grid.GridPanel({
        width:400,
        autoHeight: true,
        renderTo: ‘grid1‘,
        store: store1,
        columns: columns,
        enableDragDrop: true,
        viewConfig: {
            plugins: {
                ptype: ‘gridviewdragdrop‘
            }
        }
    });
    var grid2 = new Ext.grid.GridPanel({
        width:400,
        autoHeight: true,
        renderTo: ‘grid2‘,
        store: store2,
        columns: columns,
        enableDragDrop: true,
        viewConfig: {
            plugins: {
                ptype: ‘gridviewdragdrop‘
            }
        }
    });
});  

上效果图:

好了,本章到此结束,下章开始讲扩展插件,等所有扩展插件讲完,表格控件就到此结束了,你也来动手试试吧。

时间: 2024-11-05 00:40:20

ExtJS4.2学习(11)可拖放的表格(转)的相关文章

ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2

运行效果: 此文介绍了根据操作左侧菜单在右面板展示相应内容. 一.主页 先看一下跳转主页的方式:由在webapp根目录下的index.jsp跳转至demo的index.jsp 下面是demo的index.jsp的代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% response.setHeade

ExtJS4.2学习(七)EditorGrid可编辑表格(转)

鸣谢地址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-14/176.html ---------------------------------------------------------------------------------------------- 以上实现的效果就是本节所要做的效果,现在看代码: /** * Grid * 此js演示了如何设置可编辑表格 */ //表格数据最起码有列

ExtJS4.2学习(20)动态数据表格之前几章总结篇1

本节采用技术:SpringMVC+Jetty+ExtJs4.2+Maven+MySQL5.1以上+SLF4J(前几节学习的大家不知道记住了没,现在来总结复习下,顺便加点新技术) 学习本节前的准备:Eclipse高版本,Jetty插件,Maven插件,JDK1.7 休息了好久没开动教程了,确实最近太累了,大家见谅!先来看下效果,本章节是连续篇,今天是续篇的第一讲,前面都是静态讲解,大家是不是觉得不过瘾啊?咱学Java的嘛,当然得和Java的技术结合讲解咯,前面也说到以后会用动态数据讲解的.一.准备

ExtJS4.2学习(17)表单基本输入控件Ext.form.Field

Ext.form.Field是所有表单输入控件的基类,其他的输入控件都是基于Ext.form.Field扩展得来的. Ext.form.Field中定义了输入控件通用的属性和功能函数,这些通用的属性和功能函数大致分为3大类:页面显示样式.控件参数配置和数据有效性检验.我们先来看看表单输入控件可以使用的校验显示方式.默认情况下,这些输入控件会监听blur事件,如果数据校验失败,就会根据msgTarget中的设置显示错误信息.通常,msgTarget会被设置为qtip,即使用QuickTip显示错误

ExtJS4.2 Grid知识点三:改变表格Grid单元格背景颜色

在ExtJS4.2 Grid知识点一:改变表格Grid单元格文字颜色一文中讲解了如何改变单元格中文字颜色,接下来在本章学习如何改变Grid中单元格的背景颜色,显示结果如图片: 在线演示  /  示例代码 实现方式同样是为Grid中该列自定义renderer函数,查询ExtJS 4.2 API得知,Ext.grid.column.Column的renderer属性可以是一个函数也可以是字符串,这个知识点是通过函数来实现的.函数参数列表如下: value : 当前待渲染的单元格值,即表格中某行某列的

ExtJS4.2 Grid知识点四:改变表格Grid行文字颜色,划过Grid行时文字变粗

在ExtJS4.2 Grid知识点一:改变表格Grid单元格文字颜色一文中讲解了如何改变单元格中文字颜色,接下来在本章学习如何改变Grid中整行文字的颜色,这样就不需要为每列单独定义renderer函数,显示结果如图片: 在线演示  /  示例代码 实现方式是在Grid中设置viewConfig属性的getRowClass函数,函数参数列表如下: record: 当前待渲染行数据Model,类型为:Ext.data.Model rowIndex: 当前待渲染行数,类型为:Number rowPa

ExtJS4.2学习(18)时间控件

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-22/190.html 感谢“束洋洋 ”的付出. 前言:以下博客内容全是拷贝上述网址的,不过是自己运行一遍罢了,做点记录. 一.事件控件一 1.效果图: 2.代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding

ios网络学习------11 原生API文件上传之断点续传思路

#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; //下载文件 [self download]; } -(void)download { //1. NSURL NSURL *url = [NSURL URLWithString:@"ht

ThinkPhp学习11

原文:ThinkPhp学习11 一.常用连贯操作 1.where  帮助我们设置查询条件 2.order   对结果进行排序  $arr=$m->order('id desc')->select();  $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select(); 3.limit   限制结果  limit(2,5)  limit('2,5')  limit(10)//limit(0,10) 4.field