`
gtgt1988
  • 浏览: 111539 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

extjs-EditorGridPanel学习

 
阅读更多

重要的方法:grid.getStore().getModifiedRecords();获得编辑后的结果

 text: "增加",  

                handler: function() {  

                    var Plant = store.recordType;  

                    var p = new Plant({  

                        common: 'New Plant 1',  

                        light: 'Mostly Shade',  

                        price: 0,  

                        availDate: (new Date()).clearTime(),  

                        indoor: false  

                    });  

                    grid.stopEditing();  

                    store.insert(0, p);  //插入第一行

                    grid.startEditing(0, 0);  

Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif';  
Ext.QuickTips.init();  
Ext.onReady(function() {  
    //Ext.Msg.alert("sf0", "sdf");  
    //格式化日期  
    function formatDate(value) {  
        return value ? value.dateFormat('Y年m月d日') : '';  
    }  
  
    // 别名  
    var fm = Ext.form;  
  
    //checkbox选择模型  
    var sm = new Ext.grid.CheckboxSelectionModel({ checkOnly: true });  
  
    //构造一个只能包含checkbox的列  
    var checkColumn = new Ext.grid.CheckColumn({  
        header: 'Indoor?', 
        dataIndex: 'indoor',  
        width: 55  
    });  
  
    // 构造ColumnModel  
    var cm = new Ext.grid.ColumnModel({  
        columns: [  
        sm,  
        {  
            id: 'common',  
            header: 'Common Name',  
            dataIndex: 'common',  
            width: 220,  
            // 使用上边定义好的别名  
            editor: new fm.TextField({  
                allowBlank: false  
            })  
        }, {  
            header: 'Light',  
            dataIndex: 'light',  
            width: 130,  
            editor: new fm.ComboBox({  
                typeAhead: true,  
                triggerAction: 'all',  
                transform: 'light',  
                lazyRender: true,  
                listClass: 'x-combo-list-small'  
            })  
        }, {  
            header: 'Price',  
            dataIndex: 'price',  
            width: 70,  
            align: 'right',  
            renderer: 'usMoney',  
            editor: new fm.NumberField({  
                allowBlank: false,  
                allowNegative: false,  
                maxValue: 100000  
            })  
        }, {  
            header: 'Available',  
            dataIndex: 'availDate',  
            width: 95,  
            renderer: formatDate,  
            editor: new fm.DateField({  
                format: 'Y年m月d日',  
                minValue: '01/01/06',  
                disabledDays: [0, 6],  
                disabledDaysText: 'Plants are not available on the weekends'  
            })  
        },
        checkColumn  
    ],  
        defaults: {  
            sortable: true  
        }  
    });  
  
  
    // 构造一个Store对象  
    var store = new Ext.data.Store({  
  
        url: 'plants.xml',  
  
        reader: new Ext.data.XmlReader(  
            {  
              record:'plant' 
            },  
  
            [  
                { name: 'common', type: 'string' },  
                { name: 'botanical', type: 'string' },  
                { name: 'light' },  
                { name: 'price', type: 'float' },  
                { name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y' },  
               { name: 'indoor', type: 'bool' }  
            ]  
        ),  
        sortInfo: { field: 'common', direction: 'ASC' }  
    });  
  
    // 构造可编辑的grid  
    var grid = new Ext.grid.EditorGridPanel({  
        //sm: new Ext.grid.RowSelectionModel({ singleSelect: false }),  
        sm: sm,  
        store: store,  
        cm: cm,  
        renderTo: 'grid',  
        width: 600,  
        height: 300,  
        autoExpandColumn: 'common',  
        title: 'Edit Plants?',  
        frame: true,  
        plugins: checkColumn,  
        clicksToEdit: 1,  //默认2次双击才触发编辑框事件
        listeners: {  
            "afterEdit": {  
                fn: afterEdit,  
                scope: this  
            }  
        }, 
    	bbar: new Ext.PagingToolbar({
			pageSize : 5,
			store : store,
			firstText : '第一页',
			nextText : '下一页',
			prevText : '上一页',
			refreshText : '刷新',
			lastText : '最后一页',
			beforePageText : '当前',
			afterPageText : '页/共{0}页',
			displayInfo : true,
			displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
		
			emptyMsg : "没有记录"
			
		}),
        tbar: [{  
            text: "保存",  
            handler: function() { 
        	 var  mod=grid.getStore().getModifiedRecords();
        	 for ( var i = 0; i < mod.length; i++) {
     			alert(mod[i].data.common);
     		}
                var mod = store.modified;  
               // updateData(mod);  
            }  
        },  
            '-',  
            {  
                text: "增加",  
                handler: function() {  
                    var Plant = store.recordType;  
                    var p = new Plant({  
                        common: 'New Plant 1',  
                        light: 'Mostly Shade',  
                        price: 0,  
                        availDate: (new Date()).clearTime(),  
                        indoor: false  
                    });  
                    grid.stopEditing();  
                    store.insert(0, p);  
                    grid.startEditing(0, 0);  
                }  
            },  
            " ",  
            {  
                text: "删除",  
                handler: function() {  
                    var selModel = grid.getSelectionModel();  
                    if (selModel.hasSelection()) {  
                        Ext.Msg.confirm("警告", "确定要删除吗?", function(button) {  
                            if (button == "yes") {  
                                var selections = selModel.getSelections();  
                                Ext.each(selections, function(item) {  
                                    store.remove(item);  
                                   // store.removed.push(item);  
                                });  
                            }  
                           // alert(store.removed.length);  
                        });  
                    }  
                    else {  
                        Ext.Msg.alert("错误", "没有任何行被选中,无法进行删除操作!");  
                    }  
                }  
            }  
                ]  
    });  
  
    // 触发数据的加载  
    store.load();  
  
    //发送数据到服务器端进行更新  
//    function updateData(mod) {  
//        var json = [];  
//        Ext.each(mod, function(item) {  
//            json.push(item.data);  
//        });  
//        if (json.length >= 0) {  
//            Ext.Ajax.request({  
//                url: "EditGrid.aspx",  
//                params: { data: Ext.util.JSON.encode(json) },  
//                method: "POST",  
//                success: function(response) {  
//                    Ext.Msg.alert("信息", "数据更新成功!", function() { store.reload(); });  
//                },  
//                failure: function(response) {  
//                    Ext.Msg.alert("警告", "数据更新失败,请稍后再试!");  
//                }  
//            });  
//        }  
//        else {  
//            Ext.Msg.alert("警告", "没有任何需要更新的数据!");  
//        }  
//    }  
  
    //编辑后触发的事件,可在此进行数据有效性的验证  
    function afterEdit(e) {  
        if (e.field == 'common') {  
            if (e.value == '123') {  
                Ext.Msg.alert("错误", "大笨是人物不是植物", function() { grid.startEditing(e.row, e.column) });  
            }  
        }  
    }  
});  
分享到:
评论

相关推荐

    Extjs可编辑的EditorGridPanel

    NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629

    Extjs EditorGridPanel中ComboBox列的显示问题

    EditorGridPanel中嵌入ComboBox通常不会正常显示ComboBox的store中本想显示字段,而是显示的EditorGridPanel中 store的dataindex指定的字段内容。

    extjs实例与学习资料

    因为前段时间有两个专案要用到extjs技术,所以自己学了一段时间,在专案才发现extjs的强大,无论对于开发者还是使用者他都是一场视觉盛宴,这里有我从学习开始做的一些笔记和例子也有自己收集的学习资料,里面包括...

    给Extjs的GridPanel增加“合计”行

    NULL 博文链接:https://tonylian.iteye.com/blog/1735525

    EXTJS 学习笔片段1

    EXTJS 学习笔片段1 Form ComboBox 远程ComboBox 替代页面上已经存在的Select控件 Grid EditorGridPanel 使用本地store Toolbar工具菜单创建 分页工具栏创建 Window 弹出处理window窗口(模态窗口) ...

    ExtJS 2.0实用简明教程

    22)可编辑表格EditorGridPanel 23)窗口基本应用 24)窗口分组 25)对话框 26)与服务器交互 27)Record 28)Store 29)TreePanel基本使用 30)使用树控件TreeNode 31)使用树控件TreeLoader 32)自定义TreeLoader

    ExtJS入门教程(超级详细)

    1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、...73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65

    ExtJs2.0简明教程

    ….36 6.2 可编辑的表格EditorGridPanel……….………………………………………………………………………..…….41 6.3 与服务器交互……….………………………………………………………………………………...

    ExtJS下grid的一些属性说明

    1.界面修改(css style): Extjs中界面风格与我们产品本身的风格有很大不同,从边框、选中行的颜色到鼠标移动到的... GroupingView, EditorGridPanel): Extjs的grid功能强大,如排序、隐藏列或移动列等,这些都有一些属

    Ext 3.2的一个TreeGrid

    感谢 Ericzhen 远离颠倒梦想,蕴籍无上清凉 这里引用它的资源 仅作分享 http://www.cnblogs.com/Ericzhen/archive/2012/06/11/2545186.html

    GridPanel属性详解

    详细介绍GridPanel各项属性,ExtJS 普通表格:Ext.grid.GridPanel属性详解

Global site tag (gtag.js) - Google Analytics