`
hackbomb
  • 浏览: 217264 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

带搜索功能的grid分页实例

    博客分类:
  • Ext
阅读更多

本实例将在带分页的表格基础上进行扩展,增加搜索功能。由于本实例采用fleaphp+ext制作,故本实例将只贴出核心的代码,不提供源码打包下载了(见谅)。部分参考自志凡的extjs grid搜索分页实例。下面先看下服务端的核心代码,这里采用PHP:
   /**
     * 留言列表
     */
    function actionList() {
           $modelBO = & FLEA::getSingleton('Model_board');
           load_class('FLEA_Helper_Pager');
           $page = isset($_REQUEST['start']) ? (int)$_REQUEST['start']-1 : 0;

           //若搜索字段为空及表格初始化时,显示全部记录,否则根据title搜索
           $str = null;
           if ($_REQUEST['title']) {//接受传送过来的title值
              $str = ' title like '%'. trim($_REQUEST['title']) .'%'';
           }
           $pager= new FLEA_Helper_Pager($modelBO,$page,20,$str,'board_id DESC');
           $posts = $pager->findAll();
           $post_arr = array('0'=>'未回复','1'=>'已回复');

           foreach ($posts as $val2) {
               $temp['board_id'] = $val2['board_id'];
               $temp['title'] = $val2['title'];
               $temp['comment'] = $val2['comment'];
               $temp['is_post'] = $post_arr[$val2['is_post']];
               $temp['post_comment'] = $val2['post_comment'];
               $temp['add_time'] = $val2['add_time'];
               $temp['add_user'] = $val2['add_user'];
               $new_arr[] = $temp;
           }


           $result['topics'] = $new_arr;
           $js=count($modelBO->findAll());
           $result['totalCount'] = $js;
           require('./common/Json.php');
           $json = new Services_JSON();
           echo $json->encode($result);
    }

     实际上就是服务端接受ext搜索表单传送的值,搜索相应记录返回即可,在看下客户端js代码:


      Ext.onReady(function(){
    var ds = new Ext.data.Store({
        proxy : new Ext.data.HttpProxy({url:'index.php?controller=board&action=list'}),
        reader: new Ext.data.JsonReader({
            root: 'topics',
            totalProperty: 'totalCount',
            id: 'board_id'
            },[
            'board_id','title','is_post','add_time','add_user'
          ])
    });

    var colModel = new Ext.grid.ColumnModel([
         new Ext.grid.RowNumberer(),
         {header:'ID',width:50,sortable:true,dataIndex:'board_id'},
         {header:'标题', width:300,sortable:true,dataIndex:'title'},
         {header:'作者', width:150,sortable:true,dataIndex:'add_user'},
         {header:'是否回复',width:100,sortable:true,dataIndex:'is_post'},
         {header:'发布时间',width:200,sortable:true,dataIndex:'add_time'}
        ]);

    //设置搜索表单
    var s_pannel = new Ext.FormPanel({
        baseCls: 'x-plain',
        defaults: {width: 150},
        defaultType: 'textfield',
        items: [{
                fieldLabel: '标题',
                id:'title',
                name: 'title'
            }]
    });

    var grid = new Ext.grid.GridPanel({
                border:false,
                buttonAlign :'left',
                region:'center',
                loadMask: true,
                store: ds,
                cm: colModel,
                autoScroll: true,
                tbar: [
                   s_pannel,//搜索表单
                   {
                       text: '搜索',
                          handler:function(){
                             // 这里是关键,重新载入数据源,并把搜索表单值提交
                             ds.load({
                                     params:{start:0, limit:20,
                                         title:Ext.get('title').dom.value//取得搜索表单文本域的值,发送到服务端
                                     }
                                 })
                          }
                   }
                ],
                bbar: new Ext.PagingToolbar({
                    pageSize: 20,
                    store: ds,
                    displayInfo: true,
                    displayMsg: '第{0} 到 {1} 条数据 共{2}条',
                    emptyMsg: "没有数据"
                })
            });

    var viewport = new Ext.Viewport({
        layout:'border',
        items:[grid]
        });

    ds.load({params:{start:0, limit:20, forumId: 4}});
    // 这里很关键,如果不加,翻页后搜索条件就变没了,这里的意思是每次数据载入前先把搜索表单值加上去,
    // 这样就做到了翻页保留搜索条件了
    ds.on('beforeload',function(){
      Ext.apply(
      this.baseParams,
      {
           title:Ext.get('title').dom.value
      });
    });

    //end loding
    setTimeout(
                function() {
                    Ext.get('loading').remove();
                    Ext.get('loading-mask').fadeOut({remove:true});
                }, 250
              );
});

分享到:
评论

相关推荐

    Ext grid 分页实例源码

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

    ext2.0 grid 分页实例(php)

    总的来说,Ext JS 2.0 Grid分页实例与PHP的结合,是前后端协同工作的一个典型示例,通过合理的数据分页策略,可以有效地处理大数据集,提供流畅的用户体验。在实际开发中,可以根据项目需求进行调整和优化,例如添加...

    Extjs grid分页1

    在本文中,我们将深入探讨ExtJS Grid的分页功能及其实现方式。 首先,ExtJS Grid是一种强大的JavaScript组件,用于在Web应用中创建数据网格。它支持各种特性,如排序、过滤、分组、分页等。分页功能特别适用于处理...

    Extjs 4.0 MVC分页实例

    在这个MVC(Model-View-Controller)分页实例中,我们将探讨如何利用ExtJS 4.0的MVC架构来实现数据的分页展示。MVC模式是软件工程中的一个设计模式,它将应用程序分为三个主要部分:模型(Model)处理数据,视图...

    ext4 表格分页实例代码

    实现EXT4表格分页实例,首先需要创建一个EXT JS项目,使用Eclipse作为IDE。在Eclipse中,可以使用Sencha CMD工具来生成项目结构和基础代码。项目创建后,需要编写以下主要部分: 1. **数据模型(Model)**:定义...

    Extjs4 Grid分页与自动刷新

    ### Extjs4 Grid分页与自动刷新 #### 一、Extjs4 Grid 分页功能实现 在使用Extjs4进行Web应用开发时,Grid控件是常用的数据展示组件之一。对于大数据量的情况,通常需要使用分页来提高用户体验。下面详细介绍如何...

    一个很好的EXTGRID实例

    3. **分页**:EXTGRID支持分页功能,用户可以轻松浏览大量数据,提高性能。 4. **筛选和排序**:用户可以在网格上直接进行数据筛选和排序,提高数据查找效率。 5. **编辑功能**:EXTGRID可以配置为行编辑或单元格...

    Ext grid 简单实例

    在这个"Ext Grid简单实例"中,我们将探讨如何从Web服务提取数据并将其在Grid中显示。 首先,让我们了解基本的Ext Grid组成部分: 1. **Store**: Store是数据存储的地方,它可以连接到不同的数据源,如JSON、XML或...

    Extjs Grid 扩展实例

    "Extjs Grid 扩展实例"是一个演示如何增强Grid功能的实践案例,通过这个实例,我们可以学习到如何在原有Grid的基础上进行自定义扩展,实现更复杂的数据管理和用户交互。 首先,"extend"在编程中通常意味着类的继承...

    smartgwt 分页grid

    总的来说,SmartGWT的Grid组件结合其强大的分页功能,使得开发者能够高效地管理和展示大量数据,同时提供优秀的用户体验。通过深入了解和实践,你可以掌握更多的技巧和策略,以应对各种复杂的业务需求。

    extjs后台分页实例

    总的来说,ExtJS后台分页实例展示了如何利用前端的ExtJS组件与后端JSP服务配合,实现数据的分页加载和展示。理解这个过程对于开发大型、数据密集型的Web应用至关重要,因为它能有效提高页面性能,减少不必要的数据...

    Flex分页显示实例

    本实例将聚焦于“Flex分页显示”,这是一种使用Adobe Flex框架实现的数据分页方法。Flex是基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。它提供了丰富的组件库和强大的数据绑定机制,使得开发...

    vue.js图标列表分页实例特效源码.zip

    在“vue.js图标列表分页实例特效源码.zip”这个项目中,我们可以深入理解如何使用Vue.js来实现一个带有图标、列表和分页功能的动态界面。 首先,Vue.js的核心概念是组件,它允许我们将UI分解为可重用的模块。在这个...

    jq-grid的实例

    JQGrid是一款基于jQuery的强大的数据网格插件,它提供了丰富的功能和自定义选项,用于在网页上展示和操作表格数据。这个实例是关于如何使用JQGrid来创建交互式的表格,允许用户按照需求修改表格中的任何单元格值。 ...

    JSGrid实例

    它提供了丰富的功能,如数据加载、排序、过滤、分页、编辑和删除等,非常适合创建交互式的前端数据管理界面。在这个"JSGrid实例"中,我们将深入探讨JSGrid的关键特性和用法。 1. **安装与引入** 要在项目中使用JS...

    使用Ext的Grid,Form,Dialog来实现分页列表,创建,修改,删除功能

    本文将详细介绍如何使用Ext的Grid、Form和Dialog组件来实现分页列表、创建、修改和删除功能。 1. **Ext Grid组件**:Grid是Ext的核心组件之一,用于展示数据列表。它可以轻松地实现数据的分页、排序、过滤等功能。...

    Ext Grid +dwr 列表展示展示带分页

    2. **创建Ext Grid**: 在前端,我们需要创建一个Ext Grid实例,并定义列模型、数据存储和分页配置。列模型定义了表格的列,数据存储负责管理数据,而分页配置则指定如何进行分页操作。 3. **设置数据源**: 使用DWR...

    ext grid网格控件实例

    在本实例中,我们将探讨四种不同的数据源加载方式:Array、XML、JSON以及动态从服务器获取数据,并且所有实例都包含了分页功能。 1. **Array数据源**:EXT Grid可以轻松地从数组中加载数据。这种方式适用于数据量较...

    ext tree grid 的高级实例运用

    其次,`Grid`组件通常用来展示二维表格数据,支持排序、筛选、分页等多种功能。在与`Tree`结合的情况下,`Grid`可以显示与树形结构相关的详细信息。例如,当用户选择一个树节点时,与其相关的数据行会出现在`Grid`中...

    SSH Extjs treeGrid conboxTree 分页实例

    最近在自学Extjs,做了一个小例子,后台使用SSH,前台是ExtJs,其中包含了很多内容,例如grid,TreeGrid,comboxTree,分页等内容,数据库采用的是mysql,文件中包含了数据库文件,导入mysql数据库即可,希望可以对初学者有一点...

Global site tag (gtag.js) - Google Analytics