`
kidiaoer
  • 浏览: 805924 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Ext Js Grid 编辑 新增 删除 保存的一个小示例

阅读更多
Ext Js Grid 编辑 新增 删除 保存的一个小示例
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Paging</title>
     <link rel="stylesheet" type="text/css" href="css/ext-all.css" />   
     <script type="text/javascript" src="ext-base.js"></script>
    <script type="text/javascript" src="ext-all.js"></script>  
    <script type="text/javascript" src="edit-grid-paging.js"></script>
    <link rel="stylesheet" type="text/css" href="grid-examples.css" />
    <link rel="stylesheet" type="text/css" href="examples.css" />     
</head>
<body>
<script type="text/javascript" src="examples.js"></script>
<div id="topic-grid"></div>
</body>
</html>

edit-grid-paging.js

Ext.onReady(function(){
  
    Ext.QuickTips.init();    
    var authereditor = Editgridselect.init();//自定义下拉列表 数据取自数据库返回的Json
    
    var Plant = Ext.data.Record.create([                
           {name: 'title', type: 'string'},
           {name: 'forumtitle', type: 'string'},
           {name: 'forumid'},
           {name: 'author', type: 'string'},
           {name: 'replycount', type: 'int'},
           {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'},
           {name: 'lastposter'},
           {name: 'excerpt'},
           {name: 'threadid'}
      ]);
    
    var store = new Ext.data.Store({
              proxy: new Ext.data.ScriptTagProxy({ //支持跨域获取数据
                                url: 'http://extjs.com/forum/topics-browse-remote.php'
                 }),
              reader: new Ext.data.JsonReader({              
               root: 'topics',
               totalProperty:'totalCount',
               id: "threadid"
              
           }, Plant)
    })
    
    store.setDefaultSort('lastpost', 'desc');


    // pluggable renders
    /*
    function renderTopic(value, p, record){
        return String.format(
                '<b>{0}</b><a href="http://extjs.com/forum/forumdisplay.php?f={3}" target="_blank">{1} Forum</a>',
                value, record.data.forumtitle, record.id, record.data.forumid);
    }
    */
    function renderTopic(value, p, record){
        return String.format(
                '<b>{0}</b>',
                value, record.data.forumtitle, record.id, record.data.forumid);
    }
    function renderLast(value, p, r){
        return String.format('{0} by {1}', value.dateFormat('M j, Y, g:i a'), r.data['lastposter']);
    }
    
    function examineflag(value){
        return value ? '是' : '否';  
    };
        
  
    // 顶部工具栏按钮
    var contrltar = [{
                        text: '添加',
                        handler : function(){
                                                var p = new Plant({
                                                                title: '',
                                                                forumtitle:'',
                                                                forumid:'',
                                                                author: '',
                                                                replycount: 0,
                                                                lastpost: (new Date()).clearTime(),                                                                
                                                                lastposter:'',
                                                                excerpt:'新内容'
                                                                });
                                             //var n = ds.totalLength;
                                            grid.stopEditing();
                                            store.insert(0,p);      //ds.insert(n, p);
                                            grid.startEditing(0,1); //grid.startEditing(n, 0);                                            
                        }
                    },{
                        text: '删除',
                        handler : function(){      
                            var gcm = grid.getSelectionModel();
                            var rows = gcm.getSelections();
                            if(rows.length>0){
                                for (var i = 0; i < rows.length; i++) {
                                                        var row = rows;
                                                        var data = row.data;                                                        
                                                        alert(row.data.threadid);
                                                        store.remove(row);
                                }
                            }else{
                                Ext.Msg.alert('提示','请选择要删除的记录');
                            }
                            
                            
                        }
                    }];
    //底部工具栏按钮
    var pagingBar = new Ext.PagingToolbar({
        pageSize: 10,
        store: store,
        beforePageText:'当前页',
        afterPageText:'共{0}页',
        firstText:'首页',
        lastText:'尾页',
        nextText:'下一页',
        prevText:'上一页',
        refreshText:'刷新',
        displayInfo: true,
        displayMsg: '显示{0} - {1}条 共{2}条记录',
        emptyMsg: "无记录显示",
        
        items:[
            '-', {
            pressed: true,
            enableToggle:true,
            text: '查看详情',
            //cls: 'x-btn-text-icon details',
            toggleHandler: function(btn, pressed){
                    var view = grid.getView();                    
                    view.showPreview = pressed;
                       view.refresh();
            }
        }]
    });
    
    var checkbox = new Ext.grid.CheckboxSelectionModel();
    
    var cm = new Ext.grid.ColumnModel([
            checkbox,
            {
                id: 'topic', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 })
                header: "主题",
                dataIndex: 'title',
                width: 320,
                renderer: renderTopic,
                sortable: true,
                editor: new Ext.form.TextArea({
                                    allowBlank: false,
                                    blankText:'请输入主题'
                           })
            },{
                header: "作者",
                dataIndex: 'author',
                width: 100,
                //hidden: true,
                sortable: true,
                editor: authereditor
                
            },{
                header: "回复数",
                dataIndex: 'replycount',
                width: 70,
                align: 'right',
                sortable: true,
                editor: new Ext.form.TextField({
                                    allowBlank: false
                           })
            },{
                id: 'last',
                header: "最后发表",
                dataIndex: 'lastpost',
                width: 150,
                renderer: renderLast,                
                sortable: true,
                editor: new Ext.form.DateField({
                                            format: 'm/d/y',
                                            minValue: '01/01/06',
                                               disabledDays: [0, 6],
                                            disabledDaysText: '周末不能选'
                    })
            },{
           header: "审核否",
           dataIndex: 'indoor',
           width: 55,
           renderer: examineflag,
           editor: new Ext.grid.GridEditor(new Ext.form.Checkbox())
        }        
        ]);
    
    var grid = new Ext.grid.EditorGridPanel({              
        store: store,
        renderTo: 'topic-grid',
        cm: cm,      
        width:980,
        id:'egridpanel',
        height:550,
        title:'编辑表格',    
        autoExpandColumn:'common',
        clicksToEdit:1,//设置点击几次才可编辑
        frame:true,
        sm:checkbox,
        loadMask: true,//装载动画        
        stripeRows:false,//条纹
        //autoHeight: true,//一定要写,否则显示的数据会少一行  
        //selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),//设置单行选中模式, 否则将无法删除数据
                  

        // customize view config
        viewConfig: {
            forceFit:true,
            enableRowBody:true,            
            //showPreview:true,
            showPreview:true,
            getRowClass : function(record, rowIndex, p, store){
                //if(this.showPreview){
                if(!this.showPreview){    
                    p.body = '<p>'+record.data.excerpt+'</p>';
                    return 'x-grid3-row-expanded';
                }
                return 'x-grid3-row-collapsed';
            }
        },
        tbar: contrltar,    
        bbar: pagingBar
    });

    grid.on("afteredit", afteredit, grid);//监听编辑后事件    
    store.load({params:{start:0, limit:10}});
    
    function afteredit(e){    
        // e.column;//修改的列,数字类型
        // e.row;//修改过的行从0开始
        //e.originalValue;//原始值
        //e.value;//新值        
        var data     = e.record.data;
        // 显示等待对话框
        Ext.Msg.wait("请等候", "修改中", "操作进行中...");
        var id    = data.threadid;       //"threadid"为返回Json数据的字段名    
        
        Ext.Msg.alert('您成功修改了文章信息', "被修改的内容是:" + e.value + "\n 修改的字段是:"
            + e.field+"; id是:"+id);// 取得用户名        
    }    
    
});



Ext.ux.SliderTip = Ext.extend(Ext.Tip, {
    minWidth: 10,
    offsets : [0, -10],
    init : function(slider){
        slider.on('dragstart', this.onSlide, this);
        slider.on('drag', this.onSlide, this);
        slider.on('dragend', this.hide, this);
        slider.on('destroy', this.destroy, this);
    },

    onSlide : function(slider){
        this.show();
        this.body.update(this.getText(slider));
        this.doAutoWidth();
        this.el.alignTo(slider.thumb, 'b-t?', this.offsets);
    },

    getText : function(slider){
        return slider.getValue();
    }
});



Ext.grid.CheckColumn = function(config){
    Ext.apply(this, config);
    if(!this.id){
        this.id = Ext.id();
    }
    this.renderer = this.renderer.createDelegate(this);
};

Ext.grid.CheckColumn.prototype ={
    init : function(grid){
        this.grid = grid;
        this.grid.on('render', function(){
            var view = this.grid.getView();
            view.mainBody.on('mousedown', this.onMouseDown, this);
        }, this);
    },

    onMouseDown : function(e, t){
        if(t.className && t.className.indexOf('x-grid3-cc-'+this.id) != -1){
            e.stopEvent();
            var index = this.grid.getView().findRowIndex(t);
            var record = this.grid.store.getAt(index);
            record.set(this.dataIndex, !record.data[this.dataIndex]);
        }
    },

    renderer : function(v, p, record){
        p.css += ' x-grid3-check-col-td';
        return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"> </div>';
    }
};




Ext.namespace('Editgridselect');
Editgridselect.init = function (){
    var fm = Ext.form, Ed = Ext.grid.GridEditor;    
        var RecordDef = Ext.data.Record.create([    
            {name: 'formname'},{name: 'formid'}                  
        ]);
        var groupStore=new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url: 'autherselect.php'}),           
            reader: new Ext.data.JsonReader({id:"sn",root:'datalist'},RecordDef ),              
            remoteSort: true });  
        groupStore.load();
        var combox = new Ext.form.ComboBox({
               typeAhead: true,mode : 'local', selectOnFocus : true,
               forceSelection : true ,triggerAction: 'all',
               store:groupStore, hiddenName:'formname',
               valueField : 'formid',displayField : 'formname',      
               lazyRender:true,listeners: { select: function() {this.setValue(combox.getRawValue()); }    
             }  
            });
         var editor = new Ed(combox);         
        return editor;
}

服务器端:
autherselect.php
<?php
header("Content-Type: text/plain; charset=utf-8");
$select = array('datalist'=>array(
array('formname'=>'张三','formid'=>"SCZL"),
array('formname'=>'李四','formid'=>"ZLBGV"),
array('formname'=>'王五','formid'=>"fagg"),
array('formname'=>'Dvaid','formid'=>"fhdf"),
array('formname'=>'Rocky','formid'=>"rocky")
)
);
echo json_encode($select);
//echo "([{'formname':'Java','formid':'java'},{'formname':'EXTJS','formid': 'extjs'}])";
?>
分享到:
评论

相关推荐

    EXT2.0 GRID 示例

    我的资源不需要积分 EXT2.0 GRID 示例 很实用

    EXT JSON Grid示例

    本例采用PHP,json, sqlite,来显示一个EXT3.0的Grid,需要PHP环境,可以用xampp集成包。 部署后访问http://localhost/ExtSample/employee.php

    Ext jsGrid 锁列问题

    用于Ext开发Grid中遇到的所锁列的问题,这个很有帮助

    Ext中grid多行数据全部删除

    Ext中grid鼠标单击的每一行数据都能累加id,取消某一行id也随着取消,很实用。

    ext grid 合计行

    找了半天,结果在extjs的老家找到一个前辈写的代码,可以在grid上面加上合计, &lt;br&gt;但是却只能合计grid里面的数据,但是我们平常一般是只显示20行或者30行,这样的合计就没有什么意义,我们的合计数据是单独从...

    Ext.grid.GridPanel 删除线

    Ext.grid.GridPanel 删除线 放到example文件夹下运行

    jq-extgrid v1.2 表格插件

    extgrid 是一款jquery上的gird插件 界面风格采用了类似easyui extjs 界面风格样式 可通过css修改自己想要的样式 extgrid具有列大小 位置改变 排序 分组 分页 工具栏 扩展行 rowNumber 多选列 编辑列 行列锁 ajax...

    Ext grid中渲染进度条,超帅 源码-----下载不扣分,回帖加1分,欢迎下载,童叟无欺。

    Ext grid中渲染进度条,超帅 源码-----下载不扣分,回帖加1分,欢迎下载,童叟无欺。Ext grid中渲染进度条,超帅 源码-----下载不扣分,回帖加1分,欢迎下载,童叟无欺。Ext grid中渲染进度条,超帅 源码-----下载不扣分...

    EXT-JS Grid 用法

    EXT-JS Grid 用法 用EXT Designer 工具设计,步骤清晰详尽。

    grid js 例子一个 ext 的

    有用的grid' js 实现 哪来分享! grid js 例子一个 ext 的 grid js 例子一个 ext 的 grid js 例子一个 ext 的

    EXT动态新增一行

    EXT动态新增一行 用的column布局,点击一个按钮能添加一行组件,如文本框,有下拉框等。

    可编辑表格Ext.grid.EditorGridPanel

    此文档是可编辑表格Ext.grid.EditorGridPanel的说明以及示例的源代码,放到eclipse里面即可运行,显示出效果!

    Ext grid 简单实例

    webservice提取数据 grid显示数据 csdn上feiyu0805做的,对Ext初学很有帮助, 我就上传了

    Ext4 grid打印

    Ext4 grid打印,打印预览,复杂表头打印,等等都实现了!

    一个很好的EXTGRID实例

    一个EXT GRID的实例。是一个人新增人员的BS界面形式的程序。很漂亮的界面风格,很人性化的功能支持。

    ext-js示例代码

    ext-js示例代码 ext-js示例代码 ext-js示例代码

    ExtJs4.1 treegrid CRUD 读取、新增、修改、删除

    实现treegrid组件的(CRUD)读取、新增、修改、删除 //设置grid单元格处于编辑状态 selcell:function(arow,acol){ this.editingPlugin.startEditByPosition({row:arow,column:acol}); }, selcell2:function(node,...

    EXT GRID使用

    EXT GRID使用EXT GRID使用 EXT GRID使用EXT GRID使用

    Ext自定义Grid Cell插件

    Ext自定义Grid Cell插件,使用此插件可以在Grid空间的Cell单元格中插入指定的控件

    Ext grid 分页实例源码

    Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码

Global site tag (gtag.js) - Google Analytics