Extjs 4.2 grid增删改查 JSP

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" charset="utf-8">
<title>我的第一个JavaWeb程序</title>
<!-- 引入库文件 -->
<link href="Scripts/ExtJS_4.2/resources/css/ext-all-neptune.css"
    rel="stylesheet" />
<script type="text/javascript" charset="utf-8"
    src="Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" charset="utf-8"
    src="Scripts/ExtJS_4.2/bootstrap.js"></script>
<script type="text/javascript" charset="utf-8"
    src="Scripts/ExtJS_4.2/locale/ext-lang-zh_CN.js"></script>
</head>
<script type="text/javascript">
    Ext.onReady(function() {
        
        //创建grid
        //1.创建数据源
        var store = Ext.create('Ext.data.Store', {
            fields : [ "tId", "tName", "Phone", "Address", ],
            pageSize : 6, //页容量5条数据
            //是否在服务端排序 (true的话,在客户端就不能排序)
            remoteSort : false,
            remoteFilter : true,
            proxy : {
                type : 'ajax',
                url : 'DataManagers?type=select',
                reader : { //这里的reader为数据存储组织的地方,下面的配置是为json格式的数据,例如:[{"total":50,"rows":[{"a":"3","b":"4"}]}]
                    type : 'json', //返回数据类型为json格式
                    root : 'rows', //数据
                    totalProperty : 'total' //数据总条数
                }
            },
            sorters : [ {
                //排序字段。
                property : 'ordeId',
                //排序类型,默认为 ASC
                direction : 'desc'
            } ],
            autoLoad : true
        //即时加载数据
        });
        //2.定义列/和工具栏
        var column = [ {
            text : '编号',
            dataIndex : 'tId',
            align : 'center',
            maxWidth : 120
        }, {
            text : '姓名',
            dataIndex : 'tName',
            align : 'center',
            maxWidth : 80
        }, {
            text : '电话',
            dataIndex : 'Phone',
            align : 'center',
            maxWidth : 120
        }, {
            text : '地址',
            dataIndex : 'Address',
            align : 'center',
            maxWidth : 120
        } ]

        var tbars = [ , "-", {
            text : '新增',
            iconCls : 'a_add',
            handler : function() {
                showAlert("insert")
            }
        }, "-", {
            text : '编辑',
            iconCls : 'a_edit2',
            handler : function() {
                showAlert("update")
            }
        }, "-", {
            text : '删除',
            iconCls : 'a_upload',
            handler : function() {
                showAlert("delete")
            }
        }, "-", {
            text : '刷新',
            iconCls : 'a_edit',
            handler : function() {
                showAlert("freshen")
            }
        }, "-", "->", {
            text : "姓名:"
        }, {
            id : 'likeName',
            xtype : 'textfield',
            text : ':',
            width : 160
        }, "-", {
            iconCls : "a_search",
            text : "搜索",
            handler : function() {
                showAlert("select")
            }
        } ];
        //3.创建grid
        var grid = Ext.create('Ext.grid.Panel', {
            //renderTo: Ext.getBody(),
            id : 'tgrid',
            store : store,
            height : 500,
            //width:800,
            selModel : {
                selType : 'checkboxmodel'
            }, //选择框
            columns : column,
            bbar : [ {
                xtype : 'pagingtoolbar',
                store : store,
                displayMsg : '显示 {0} - {1} 条,共计 {2} 条',
                emptyMsg : "没有数据",
                beforePageText : "当前页",
                afterPageText : "共{0}页",
                displayInfo : true
            } ],
            /* listeners : {
                'itemclick' : function(view, record, item, index, e) {
                    Ext.MessageBox.alert("标题", record.data.cataId);
                }
            }, */
            tbar : tbars,
        });

        //1.基本的选项卡
        var tabs1 = Ext.createWidget('tabpanel', {
            renderTo : "tabPanel",
            activeTab : 0, //指定默认的活动tab
            width : 1000,
            height : 600,
            plain : true, //True表示tab候选栏上没有背景图片(默认为false)
            enableTabScroll : true, //选项卡过多时,允许滚动
            defaults : {
                autoScroll : true
            },
            items : [ {
                id : "teacherTab",
                title : '老师信息',
                //listeners: { activate: handleActivate },
                closable : true
            //这个tab可以被关闭
            }, {
                id : "studentTab",
                title : '学生信息',
                listeners : {
                    activate : handleActivate
                },
                contentEl : 'oneTab' //指定了当前tab正文部分从哪个html元素读取
            }, {
                id : "phTab",
                title : '胖虎日记',
                listeners : {
                    activate : handleActivate
                },
                autoLoad : {
                    url : 'AjaxTabContent',
                    params : {
                        data : [ {
                            '姓名' : '1'
                        } ]
                    },
                    method : 'GET'
                }
            }, {
                id : 'tab4',
                title : '美女',
                listeners : {
                    activate : handleActivate
                },
                html : "带事件的Tab。"
            }, {
                id : 'tab5',
                title : '大猩猩',
                listeners : {
                    activate : handleActivate
                },
                disabled : true,
                html : "不可用的Tab,你是看不到我的。"
            } ]
        });

        function handleActivate(tab) {
            alert(tab.title);
        }

        Ext.getCmp('teacherTab').add(grid);

    });

    function showAlert(type) {
        if (type == "insert") {
            Addform();
            Ext.getCmp('tid').setValue(randomNumber());

        } else if (type == "delete") {
            DeleteInfo();

        } else if (type == "update") {
            //取form表单的值
            var grid=Ext.getCmp('tgrid');
            var selModel = grid.getSelectionModel();
            var rows = selModel.getSelection();
            //console.info(rows[0].data.uid, rows[0].data.uname);
            if(rows.length!=1){
                Ext.Msg.alert('提示','请选择一条数据');
                return;
            }else{
                Editform(grid,rows);
            }
            

        } else if (type == "freshen") {

        } else if (type == "select") {

            selectInfo()

        } else {
            Ext.Msg.alert("提示", "操作有误,请重试!");
            return;
        }

    }
    
     ///增删改查方法
    //添加
    function Addform() {
        var form = Ext.create('Ext.form.Panel', {
            //closable:true,
            id: 'AddForm',
            title: '添加用户信息',
            height: 300,
            width: 380,

            items: [
                {
                    name: 'tid',id:'tid', fieldLabel: '编号', readOnly: true, xtype: 'textfield'
                },
               {
                   name: 'tname',id:'tname', fieldLabel: '姓名', allowBlank: false, xtype: 'textfield', maxLength: 5, minLength: 2
               },
               {
                   fieldLabel: '电话', name: 'phone',id:'phone', xtype: 'numberfield', allowBlank: false, maxLength: 12, minLength: 7
               }, {
                   xtype: 'combo',
                   fieldLabel: '地址',
                   //width:245,
                   editable: false,
                   emptyText: '--请选择--',
                   store: addressStore,
                   //queryMode: 'local',
                   displayField: 'Address',//显示的字段
                   valueField: 'Address',//ID
                   id:"address",
                   name: 'address'
               }
            ],

            buttons: [
                {
                    formBind: true,
                    text: '提交',
                    handler: function () {
                        
                        var address = Ext.getCmp('address').getRawValue();
                        if (address == "" || address == null) {
                            Ext.MessageBox.alert("提示",'请选择地址..');
                            return;
                        }
                        
                        form.getForm().submit({
                            method: 'POST',
                            //添加时候form表单提交传值方式params:{key:value  }或通过action模型邦定传值
                            url: 'DataManagers?type=insert',
                            waitMsg: '请稍等,正在处理...',
                            success: function (form, action) {
                                //action 只接受json串
                                //var result=Ext.JSON.decode(action.result);
                                if (action.result.success == true) {
                                    
                                    Ext.MessageBox.alert('提示',"添加成功!");
                                    var grid=Ext.getCmp('tgrid');
                                    grid.store.reload();
                                    
                                    winbox.close();
                                    form.getForm().reset();

                                } else {
                                    Ext.MessageBox.alert("错误", "添加失败...请重试!");
                                }
                            },
                            failure: function () {
                                Ext.MessageBox.alert("错误", '系统错误请联系管理员Denny.Zhang');
                            }
                        })
                

                    }
                },

                {
                    text: '清空',
                    handler: function () {
                    form.getForm().reset();
                    Ext.getCmp('tid').setValue(randomNumber());
                    }
                }]
        });
        var winbox = new Ext.window.Window({

            title: '编辑模板',
            modal: true,
            items: form
        })
        winbox.show();
    }

  //删除
    function DeleteInfo() {
      var grid= Ext.getCmp('tgrid');
        var selModel = grid.getSelectionModel();
        var Ids;//要删除的id
        if (selModel.hasSelection()) {//判断是否选中数据
            Ext.Msg.confirm("警告", "确定要删除吗?", function (button) {
                if (button == "yes") {
                    var rows = selModel.getSelection();
                    console.info(rows);
                    var ids=[];
                     //要删除的id
                    Ext.each(rows, function (item) {
                        ids.push(item.data.tId);
                    })
                  
                    //alert(Ids);
                    Ext.Ajax.request({
                        url: 'DataManagers?type=delete',
                        params: {
                            idArry: ids
                        },
                        method: 'POST',
                        success: function (response,options) {
                            var responseText= response.responseText;
                            var result=Ext.JSON.decode(responseText);
                            console.info(result.success)
                            if(result.success==true){

                            Ext.MessageBox.alert("提示", '删除成功');
                            grid.store.reload();
                            }else{
                                 Ext.MessageBox.alert("提示", '删除失败');
                                 grid.store.reload();
                                
                            }
                        },
                        failure: function () {
                            Ext.MessageBox.alert("错误", '系统错误请联系管理员');
                        }
                    });
                }

            });
        }
        else {
            Ext.Msg.alert("错误", "没有任何行被选中,无法进行删除操作!");
        }
    }
    
    //修改
    function Editform(grid,rows) {

        var form = Ext.create('Ext.form.Panel', {
            //closable:true,
            id: 'EditForm',
            height: 300,
            width: 380,

            items: [
                {
                    name: 'tid',id:'tid', fieldLabel: '编号', readOnly: true, xtype: 'textfield'
                },
               {
                   name: 'tname',id:'tname', fieldLabel: '姓名', allowBlank: false, xtype: 'textfield', maxLength: 5, minLength: 2
               },
               {
                   fieldLabel: '电话', name: 'phone',id:'phone', xtype: 'numberfield', allowBlank: false, maxLength: 12, minLength: 7
               }, {
                   xtype: 'combo',
                   fieldLabel: '地址',
                   //width:245,
                   editable: false,
                   emptyText: '--请选择--',
                   store: addressStore,
                   //queryMode: 'local',
                   displayField: 'Address',//显示的字段
                   valueField: 'Address',//ID
                   id:"address",
                   name: 'address'
               }
            ],
           
            buttons: [
                {
                    formBind: true,
                    text: '提交', handler: function () {

                        form.getForm().submit({
                            method: 'POST',
                            params: {//传id修改
                                id: rows[0].data.tId
                            },
                            url: 'DataManagers?type=update',
                            waitMsg: '请稍等,正在处理...',
                            success: function (form, action) {
                               
                                if (action.result.success == true) {
                                    Ext.MessageBox.alert('提示','修改成功!');
                                    
                                    grid.store.reload();
                                    winbox.close();
                                    //Ext.MessageBox.alert('提示','修改成功');
                                    form.getForm().reset();

                                } else {
                                    Ext.MessageBox.alert("错误", "系统错误请联系管理员");
                                }
                            }
                        })

                    }
                },

                {
                    text: '取消', handler: function () {
                         form.getForm().reset();
                        winbox.close();
                    }
                }]
        });
        var winbox = new Ext.window.Window({

            title: '编辑模板',
            modal: true,
            items: form

        })


        winbox.show();
        
        //修改时赋值给修改页面
        console.info(rows[0].raw.tid)
        form.getForm().findField('tid').setValue(rows[0].data.tId);
        form.getForm().findField('tname').setValue(rows[0].data.tName);
        form.getForm().findField('phone').setValue(rows[0].data.Phone);
        form.getForm().findField('address').setValue(rows[0].data.Address);
        
        
    }
 
    //搜索
    function selectInfo() {
        var store = Ext.getCmp('tgrid').getStore();
        store.on('beforeload', function(store, options) {//搜索方法
            var new_params = {
                name : Ext.getCmp('likeName').getValue()
            //获取name为str2的值,获得多选下拉框的选中的值

            };
            Ext.apply(store.proxy.extraParams, new_params);//重新帮定数据源
        });
        store.load();//记得重加载数据源
    }
    
    //地址数据源
    var addressStore = Ext.create("Ext.data.Store", {

        fields: ['Address', 'tId'],
        proxy: {
            type: 'ajax',
            url: 'DataManagers?type=addressData',

        },
    });
    
    //生成编号
    function randomNumber(){
        var todayTime=new Date();   // 获取当前时间
        var time = Ext.Date.format(todayTime,'Ymds');  //格式化时间
        var num="T"+time;
        return num;
    }
</script>

<body>

    <h1>不死小翔-的选项卡</h1>
    <div class="content" style="height: 150px;">
        <div id="tabPanel" style=""></div>
    </div>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_36729112/article/details/86076285
今日推荐