【extjs】 ext5 Ext.grid.Panel 分页,搜索

带有分页,搜索的grid.

<%@page language="java" contentType="text/html; charset=UTF-8"
isELIgnored="false" pageEncoding="UTF-8" %>

<html>
 <head>

 <jsp:include page="../common/resource_classic.jsp"></jsp:include>
 <title>用户列表</title>
 <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/static/css/icon.css">
 <script type="text/javascript" src="${pageContext.request.contextPath}/static/js/format.js"></script>
 </head>

 <body>

 <script type="text/javascript">

 /**
  * 用户类型 store
  * */
  var userTypeStore = Ext.create(‘Ext.data.Store‘, {
      fields: [‘type‘, ‘name‘],
      data : [
          {"type":"1", "name":"后台用户"},
          {"type":"2", "name":"前台用户"}
      ]
  });

 /**
     * 搜索面板
     * */
      var panel = Ext.create(‘Ext.form.Panel‘, {
          title: ‘按条件搜索‘,
         // width: 600,
          defaultType: ‘textfield‘,
          frame: true,
          method: ‘POST‘,
          collapsible: true,//可折叠
         // bodyPadding: 5,
          layout: ‘column‘,
         // margin: ‘0 0 10 0‘,
          items: [{
              fieldLabel: ‘用户名‘,
              labelWidth: 40,
              id: ‘name‘
          },{
              fieldLabel: ‘邮箱‘,
              labelWidth: 30,
              id: ‘email‘
          },{
              fieldLabel: ‘电话‘,
              labelWidth: 40,
              id: ‘phone‘
          },{
              fieldLabel: ‘用户类型‘,
              labelWidth: 50,
              id: ‘type‘,
              xtype:"combo",
              editable:false,
              store:userTypeStore,
              valueField:‘type‘,
              displayField:‘name‘
          }, {
              fieldLabel: ‘注册时间‘,
              labelWidth: 40,
              id: ‘start‘,
              xtype:"datefield",
              format: ‘Y-m-d‘,
              editable:false
          },{
              //fieldLabel: ‘注册时间‘,
              labelWidth: 40,
              id: ‘end‘,
              xtype:"datefield",
              format: ‘Y-m-d‘,
              editable:false
          },{
              xtype: ‘button‘,
              text: ‘搜索‘,
              iconCls :"search",
              margin: ‘0 0 0 5‘,
              handler: function () {
                  var name = Ext.getCmp(‘name‘).getValue(); //获取文本框值
                  var email = Ext.getCmp(‘email‘).getValue();
                  var phone = Ext.getCmp(‘phone‘).getValue();
                  if (name !="" || email!="" || phone!="") {
                      userStore.load({ params: { name: name,email:email,phone:phone} });//传递参数
                  }
              }
          }],
          renderTo: Ext.getBody()
      });
 //用户数据
 var userStore=Ext.create(‘Ext.data.Store‘, {
        storeId:‘userStore‘,
        fields:[‘uname‘, ‘email‘, ‘phone‘,‘regIp‘,‘regTime‘,"utype"],
        proxy: {
            type: ‘ajax‘,
            url:‘${pageContext.request.contextPath}/back/user/userList.do‘,
            reader: {
                // 設置 json樣式
                type: ‘json‘,
                rootProperty:"rows", //json 数据根节点
                totalProperty:"total"//总数
            }
        },
        autoLoad: true,
        pageSize:10 //每页记录数默认25
    });

 userStore.on(‘beforeload‘,function(store, options){
     var name = Ext.getCmp(‘name‘).getValue(); //获取文本框值
      var email = Ext.getCmp(‘email‘).getValue();
      var phone = Ext.getCmp(‘phone‘).getValue();
     var new_params ={ name: name,email:email,phone:phone};
     Ext.apply(store.proxy.extraParams, new_params);
 });
 userStore.load({
     params: {
         start: 0,
         limit: 10
     }
 });

 var ckm=Ext.create("Ext.selection.CheckboxModel");
  Ext.onReady(function(){

      /**
      Grid 数据展示
      */
        Ext.create(‘Ext.grid.Panel‘, {
            title: ‘用户信息‘,
            id:‘userGridPanel‘,
            selModel:ckm,
            store:userStore,// Ext.data.StoreManager.lookup(‘simpsonsStore‘),
            columns: [
                 { text: ‘用户ID‘,  dataIndex: ‘uid‘,align: ‘center‘,hidden:true,sortable:false },
                { text: ‘用户名‘,  dataIndex: ‘uname‘,align: ‘center‘,
                     sortable:false },
                { text: ‘邮箱‘, dataIndex: ‘email‘,align: ‘center‘,sortable:false },
                { text: ‘电话‘, dataIndex: ‘phone‘,align: ‘center‘,sortable:false },
                { text: ‘注册IP‘, dataIndex: ‘regIp‘,align: ‘center‘,sortable:false },
                { text: ‘注册时间‘, dataIndex: ‘regTime‘,align: ‘center‘,scope:this,renderer:function(value){
                    var val=longToString(value,‘Y-m-d H:m:s‘)
                    //console.info(‘获取的值为:{}‘+value+‘ , ‘+val);
                    return  val;
                } },
                { text: ‘用户类型‘, dataIndex: ‘utype‘,align: ‘center‘,sortable:false,renderer:function(value){
                                    // console.info(‘用户类型:‘+value+",类型:"+ typeof value);
                    return value==1?"后台用户":"前台用户";
                } }
            ],
          forceFit:true,//强制列表宽度自适应
           autoLoad:true,
           //工具条
            tbar: Ext.create(‘Ext.toolbar.Toolbar‘,{

                //width   : 500,
                items: [{
                    text: ‘删除‘,
                    xtype: ‘button‘,
                    iconCls: ‘delete‘,
                    id: ‘user_delete‘,
                    handler: userInfoDel
                },{
                    text:‘添加‘,
                    xtype:‘button‘,
                    iconCls:‘add‘,
                    id:‘user_add‘,
                    handler:userInfoAdd
                },{
                    text:‘修改‘,
                    xtype:‘button‘,
                    iconCls:‘update‘,
                    id:‘user_update‘,
                    handler:userInfoUpdate
                }]

            }),
            renderTo: Ext.getBody(),
            //分页
            bbar: Ext.create(‘Ext.toolbar.Paging‘,{
                beforePageText:‘当前第‘,
                afterPageText:‘页‘,
                refreshText:‘刷新‘,
                store:userStore,
                displayInfo:true,
                displayMsg:‘显示:{0}-{1}条,总共:{2}条‘,
                emptyMsg:‘当前查询无记录‘
            })
        });
  });

 // 添加用户表单
 var   userAddForm= Ext.create(‘Ext.form.Panel‘,{
    width: 350,
    height:200,
    hidden:true,
    // 表单域 Fields 将被竖直排列, 占满整个宽度
    //  frame: true,
    layout: {
        type: ‘vbox‘,
        align: ‘middle‘,
        pack: ‘center‘
    },
    // 默认字段类型
    defaultType: ‘textfield‘,
    items: [{
        fieldLabel: ‘用户名‘,
        name: ‘name‘,
        allowBlank: false,
        blankText:‘用户名不能为空‘
    },{
        fieldLabel: ‘密码‘,
        inputType:‘password‘,
        name: ‘pwd‘,
        allowBlank: false,
        blankText:‘密码不能为空‘
    }, {
        fieldLabel: ‘邮箱‘,
            name: ‘email‘,
        maxLength:130,
            allowBlank: false,
            blankText:‘邮箱不能为空‘,
        vtype:"email"
        },    {
        fieldLabel: ‘电话‘,
        name: ‘phone‘,
        allowBlank: true,
        maxLength:13
        //blankText:‘密码不能为空‘
    },{
        xtype:"combo",
        fieldLabel: ‘用户类型‘,
        name:‘type‘,
        allowBlank: false,
        editable:false,
        hidden:false, //隐藏组件   默认false
        store:userTypeStore,
        valueField:‘type‘,
        displayField:‘name‘
    }
    ],

    // 重置 和 保存 按钮.
    buttons: [{
        text: ‘重置‘,
        handler: function() {
            this.up(‘form‘).getForm().reset();
        }
    }, {
        text: ‘注册‘,
        formBind: true, //only enabled once the form is valid
        disabled: true,
        handler: function() {

            userAddWin.close();
            var form = this.up(‘form‘).getForm();
            if (form.isValid()) {
                form.submit({
                    // 将会通过 AJAX 请求提交到此URL
                    url: ‘${pageContext.request.contextPath}/back/user/reg.do‘,
                    success: function(form, action) {
                        Ext.Msg.alert(‘添加成功‘, action.result.restMsg);
                        Ext.getCmp(‘userGridPanel‘).getStore().reload();
                    },
                    failure: function(form, action) {
                        Ext.Msg.alert(‘添加失败‘, action.result.restMsg);
                    }
                });
            }
        }
    }],
    renderTo: Ext.getBody()
});

 // 修改用户表单
 var   userUpdateForm= Ext.create(‘Ext.form.Panel‘,{
     width: 350,
     height:200,
     hidden:true,
     // 表单域 Fields 将被竖直排列, 占满整个宽度
     //  frame: true,
     layout: {
         type: ‘vbox‘,
         align: ‘middle‘,
         pack: ‘center‘
     },
     // 默认字段类型
     defaultType: ‘textfield‘,
     items: [{
         fieldLabel: ‘用户名‘,
         name: ‘uname‘,
         allowBlank: false,
         blankText:‘用户名不能为空‘
     },{
         fieldLabel: ‘id‘,
    //     inputType:‘password‘,
         name: ‘uid‘
     }, {
         fieldLabel: ‘邮箱‘,
         name: ‘email‘,
         maxLength:130,
         allowBlank: false,
         blankText:‘邮箱不能为空‘,
         vtype:"email"
     },    {
         fieldLabel: ‘电话‘,
         name: ‘phone‘,
         allowBlank: true,
         maxLength:13
         //blankText:‘密码不能为空‘
     },{
         xtype:"combo",
         fieldLabel: ‘用户类型‘,
         name:‘type‘,
         allowBlank: false,
         editable:false,
         hidden:false, //隐藏组件   默认false
         store:userTypeStore,
         valueField:‘type‘,
         displayField:‘name‘
     }
     ],

     // 重置 和 保存 按钮.
     buttons: [{
         text: ‘重置‘,
         handler: function() {
             this.up(‘form‘).getForm().reset();
         }
     }, {
         text: ‘修改‘,
         formBind: true, //only enabled once the form is valid
         disabled: true,
         handler: function() {

             userAddWin.close();
             var form = this.up(‘form‘).getForm();
             if (form.isValid()) {
                 form.submit({
                     // 将会通过 AJAX 请求提交到此URL
                     url: ‘${pageContext.request.contextPath}/back/user/update.do‘,
                     success: function(form, action) {
                         Ext.Msg.alert(‘修改成功‘, action.result.restMsg);
                         Ext.getCmp(‘userGridPanel‘).getStore().reload();
                     },
                     failure: function(form, action) {
                         Ext.Msg.alert(‘修改失败‘, action.result.restMsg);
                     }
                 });
             }
         }
     }],
     renderTo: Ext.getBody()
 });
  //用户添加
 var userAddWin= Ext.create(‘Ext.window.Window‘, {
     title: ‘添加用户‘,
     height: 250,
     width: 400,
     closeAction: ‘hide‘,
     layout:‘form‘,
     items:[userAddForm]
 });

 //用户修改
 var userUpdateWin= Ext.create(‘Ext.window.Window‘, {
     title: ‘修改用户‘,
     height: 250,
     width: 400,
     closeAction: ‘hide‘,
     layout:‘form‘,
     items:[userUpdateForm]
 });

  //删除用户信息
  function userInfoDel(){

      var uid=‘‘;
      var selectionModel = Ext.getCmp(‘userGridPanel‘).getSelectionModel();
      var selection = selectionModel.getSelection();
      if(selection.length==0){
          Ext.Msg.alert("提示","请选择要删除的记录!");
          return ;
      }else{
            Ext.Msg.confirm("提示","确定删除?",function(button, text){
                console.info(button+","+text);
                if(button=="yes"){
                    for(var i=0;i<selection.length;i++){
                        uid = uid+selection[i].get(‘uid‘)+",";
                    }
                    Ext.Ajax.request({
                        url: ‘${pageContext.request.contextPath}/back/user/delete.do‘,
                        params:{uid:uid},
                        /**
                         *Object {request: Object, requestId: 3, status: 200, statusText: "OK",
           *  responseText: "{"restMsg":"用户删除成功!","success":true}"…}
                         * @param response
                         * @param opts
                         */
                        success: function(response, opts) {

                            Ext.Msg.alert("信息提示","用戶信息刪除成功!");
                            Ext.getCmp(‘userGridPanel‘).getStore().reload();
                        },
                        failure: function(response, opts) {
                            Ext.Msg.alert("信息提示","刪除失敗!");
                        }
                    });
                }
            });

      }

  }

  //添加用户信息
  function userInfoAdd(){
      //
      userAddForm.reset();
     userAddForm.show();
      userAddWin.show();
  }

  //修改用户信息
  function userInfoUpdate(){

      var selectionModel = Ext.getCmp(‘userGridPanel‘).getSelectionModel();
      var selection = selectionModel.getSelection();
      if(selection.length==0){
          Ext.Msg.alert("提示","请选择要修改的记录!");
          return ;
      }

      if(selection.length>1){
          Ext.Msg.alert("提示","只能修改一条记录!");
          return ;
      }
      //获取选择的记录
      var record =selectionModel.getLastSelected();
      userUpdateForm.loadRecord(record);

      //显示修改表单
      userUpdateForm.show();
      userUpdateWin.show();
  }

 </script>

 </body>

</html>
时间: 2024-10-27 02:15:22

【extjs】 ext5 Ext.grid.Panel 分页,搜索的相关文章

【extjs】 extjs5 Ext.grid.Panel 搜索示例

先看效果图: 页面js: <script type="text/javascript"> /** * 日志类型 store * */ var logTypeStore = Ext.create('Ext.data.Store', { fields: ['type', 'name'], data : [ {"type":"1", "name":"登录日志"}, {"type":

Ext.grid.Panel表格分页存储过程

/*首先需要引入两个Extjs插件类 Ext.ux.data.PagingMemoryProxy和Ext.ux.ProgressBarPager这两个类*/ /*下面是控制弹出窗体放大缩小时窗体居中的方法*/ 1 var HotalOrderResizeCenterWindow; 2 Ext.EventManager.onWindowResize(function() { 3 if (HotalOrderResizeCenterWindow) { 4 HotalOrderResizeCenter

完善ext.grid.panel中的查询功能(紧接上一篇)

今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这样虽然实现了,但是多写了不少代码,之后网上找到了方法. 代码如下:请结合昨天的代码看,否则你是看不明白的 /*我们操作查询的功能键是放在grid的tabbar中的,下面就是创建的grid的tabbar,其中查询操作就在其中,此代码紧接上一篇文章,这个类上一篇文章中也有,但是没有实现查询功能,红色字体

Ext.grid.Panel表格特性Feature

Ext.grid.feature.Feature是一类针对Ext.grid.Panel 的特殊插件,提供了可以被扩展的基本模板方法.子类包括: 1.Ext.grid.feature.RowBody 表格行体 行体特性为表格追加了tr标签,跨越了原始表格的所有列,在表格中展示一些描述性的特殊信息时非常有用,行体在默认状态下是隐藏的,如果需要展示行体必须覆盖getAdditionalData方法,代码如下: //Ext.grid.feature.RowBody示例 Ext.onReady(funct

Extjs中grid前端分页使用PagingMemoryProxy【二】

    在项目中遇到Grid前端分页,本人也是刚接触extjs没多久,为了实现效果,一直找了很久才实现出来,对于代码中的一些也不能详细的说明出来, 不知道能不能帮助到遇到同样问题的朋友,所以将例子代码贴出来大家一起相互学习下. 在项目中时常会用到前端分页的效果,使用grid来进行分页, 在源代码中\examples\ux\data\PagingMemoryProxy.js,此时要使用该js文件,在项目引用该文件. <script type="text/javascript" sr

ExtJS自制表格Grid分页条

试过Grid自带的load和分页功能,没有成功,干脆就自己写了...... 主要是查询条件比较复杂...... 希望哪位大神能有更好的意见. 1 Ext.define('MyApp.ux.Pagination', { 2 extend: 'Ext.Toolbar', 3 // 调用时用此名称 4 alias: 'Pagination', 5 autoDestroy : true, 6 items : ['->',{ 7 // 用于记录查询条件 8 xtype : 'displayfield',

ExtJs4.2应用:使用ExtJs扩展组件searchfield实现数据搜索功能

ExtJs4.2应用:使用ExtJs扩展组件searchfield 实现数据搜索功能 1.引入searchfield组件 在Ext目录下放入ux目录将searchfield组件放入ux目录下的form文件下,如图所示: 2.在对应Js文件中引入searchfield组件 dockedItems: [{ dock: 'top', /**在顶部显示*/ xtype: 'toolbar', /**以工具栏形式展示*/ items: { width: "25%", fieldLabel: 'L

ExtJS 4.2 Grid组件的单元格合并

ExtJS 4.2 Grid组件本身并没有提供单元格合并功能,需要自己实现这个功能. 目录 1. 原理 2. 多列合并 3. 代码与在线演示 1. 原理 1.1 HTML代码分析 首先创建一个Grid组件,然后查看下的HTML源码. 1.1.1 Grid组件 1.1.2 HTML代码 从这些代码中可以看出,Grid组件可分为grid-header和grid-body 两块区域(若含有工具栏和分页栏,它们都会含有各自的独立区域). 其中grid-body包含了许多tr元素,每一个tr都是代表Gri

Ext.grid.plugin.RowExpander的简单用法

有时候,我们在grid里渲染数据时,由于某些字段的内容太长,而grid又不会自动出现滚动条,于是溢出的内容后面就会出现省略号, 导致信息展示不完全.如果,这个信息不太重要,展示不完全也无关紧要.可是,有时候,用户需要查看溢出部分的详细内容时,怎么办呢?比如下图中的grid: 因为信息内容太长,导致“消息内容”展示不全,这时候想要查看详细信息怎么办呢? 最简单的解决方法就是利用 Ext.grid.plugin.RowExpander  我们在grid配置项里面添加一个plugins属性.如下图所示