`

EXT JS 4 MVC 分页的例子

ext 
阅读更多
发一个不错的ext js 4 MVC的例子:

例子的效果图为:


项目的结构为图为:



1 model层:

Ext.define('ExtMVC.model.ForumThread', {
    extend: 'Ext.data.Model',
    fields: [
        'title', 
        'forumtitle', 
        'forumid', 
        'username',
        {name: 'replycount', type: 'int'},
        {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'},
        'lastposter', 
        'excerpt', 
        'threadid'
    ],
    idProperty: 'threadid'
});




2 store:

Ext.define('ExtMVC.store.ForumThreads', {
    extend: 'Ext.data.Store',
    model: 'ExtMVC.model.ForumThread',
    autoLoad: true,
    remoteSort: true,
    proxy: {
              type: 'jsonp',
        url: 'http://www.sencha.com/forum/topics-browse-remote.php',
        reader: {
            root: 'topics',
            totalProperty: 'totalCount'
        },
        // sends single sort as multi parameter
        simpleSortMode: true
    },
    sorters: [{
        property: 'lastpost',
        direction: 'DESC'
    }]
});



3 前端view部分
Ext.define('ExtMVC.view.forumThread.ForumThreadGrid' ,{
    extend: 'Ext.grid.Panel',
    alias : 'widget.forumthreadgrid',
    
    requires: 'Ext.ux.PreviewPlugin',

    title : 'ExtJS.com - Browse Forums',

    disableSelection: true,

    loadMask: true,

    viewConfig: {
        id: 'gv',
        trackOver: false,
        stripeRows: false,
        plugins: [{
            ptype: 'preview',
            bodyField: 'excerpt',
            expanded: true,
            pluginId: 'preview'
        }]
    },

    // 渲染器
    renderTopic: function(value, p, record) {
        return Ext.String.format(
            '<b>[url=http://sencha.com/forum/showthread.php?t={2}]{0}[/url]</b>[url=http://sencha.com/forum/forumdisplay.php?f={3}]{1} Forum[/url]',
            value,
            record.data.forumtitle,
            record.getId(),
            record.data.forumid
        );
    },

    renderLast: function(value, p, r) {
        return Ext.String.format('{0}<br/>by {1}', Ext.Date.dateFormat(value, 'M j, Y, g:i a'), r.get('lastposter'));
    },

    initComponent: function() {

    	this.store = 'ForumThreads';

    	this.columns = [
        {
            id: 'topic',
            text: "Topic",
            dataIndex: 'title',
            flex: 1,
            renderer: this.renderTopic,
            sortable: false
        },{
            text: "Author",
            dataIndex: 'username',
            width: 100,
            hidden: true,
            sortable: true
        },{
            text: "Replies",
            dataIndex: 'replycount',
            width: 70,
            align: 'right',
            sortable: true
        },{
            id: 'last',
            text: "Last Post",
            dataIndex: 'lastpost',
            width: 150,
            renderer: this.renderLast,
            sortable: true
        }];

         // paging bar on the bottom
        this.bbar = Ext.create('Ext.PagingToolbar', {
            store: this.store,
            displayInfo: true,
            displayMsg: 'Displaying topics {0} - {1} of {2}',
            emptyMsg: "No topics to display",
            items:[
                '-', {
                xtype: 'button',    
                text: 'Show Preview',
                pressed: true,
                action: 'showPreview',
                enableToggle: true
            }]
        });

    	this.callParent(arguments);
    }
 });   


4 view-point:
 
Ext.define('ExtMVC.view.Viewport', {
    extend: 'Ext.Viewport',    
    layout: 'fit',
    
    requires: [
        'ExtMVC.view.forumThread.ForumThreadGrid'
    ],
    
    initComponent: function() {
        var me = this;
        
        Ext.apply(me, {
            items: [
                {
                    xtype: 'forumthreadgrid'
                }
            ]
        });
                
        me.callParent(arguments);
    }
});


5 controller控制器
  
Ext.define('ExtMVC.controller.ForumThreads', {
    extend: 'Ext.app.Controller',

    stores: ['ForumThreads'],

    models: ['ForumThread'],

    views: ['forumThread.ForumThreadGrid'],

    init: function() {
    	this.control({
	        'forumthreadgrid button[action=showPreview]': {
	        	toggle: this.showPreview
	    	}
	    });	
    },

    showPreview: function(btn, pressed){
    	
        var preview = Ext.ComponentQuery.query('forumthreadgrid dataview')[0].plugins[0];
        
        preview.toggleExpanded(pressed);
    }
});


6 app.js
  
Ext.application({
    name: 'ExtMVC',

    paths: { 'Ext.ux': 'extjs/ux/' },

    controllers: [
        'ForumThreads'
    ],

    autoCreateViewport: true
});


7 html页面:
<html>
<head>
	<title>Ext JS 4 MVC Examples - loiane.com</title>

	<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">

	 <style>
        .x-grid-cell-topic b {
            display: block;
        }
        .x-grid-cell-topic .x-grid-cell-inner {
            white-space: normal;
        }
        .x-grid-cell-topic a {
            color: #385F95;
            text-decoration: none;
        }
        .x-grid-cell-topic a:hover {
            text-decoration:underline;
        }
		.x-grid-cell-topic .x-grid-cell-innerf {
			padding: 5px;
		}
		.x-grid-rowbody {
	        padding: 0 5px 5px 5px;
		}
    </style>


    <script type="text/javascript" src="extjs/ext-debug.js"></script>

    <script type="text/javascript" src="app.js"></script>
    
</head>
<body>
</body>
</html>
2
7
分享到:
评论
1 楼 zhengeili 2012-08-31  
paths: { 'Ext.ux': 'extjs/ux' },  ux后面 貌似不用加/了吧

相关推荐

    Ext-Js分页示例代码详解.pdf

    在EXT JS中,分页是一种常见且重要的功能,特别是在数据量较大时,为了提高用户体验,分页能够有效地分批次加载数据,避免一次性加载过多数据导致页面卡顿。EXT JS主要支持XML和JSON两种数据格式来实现分页。下面将...

    深入浅出Ext.JS.徐会生例子

    Ext.JS是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。它提供了丰富的用户界面组件、数据绑定机制和可扩展的架构,使得开发人员能够创建功能复杂的桌面级网页应用。"深入浅出Ext.JS.徐会生例子"可能是...

    深入浅出Ext JS(第2版) 随书光盘提供的书中实例

    通过逐个分析和运行这些例子,读者可以逐步掌握Ext JS的编程技巧,理解其实现原理,并能够灵活运用到实际项目中。此外,这些代码也是学习Ext JS API的好资料,读者可以通过阅读源码,了解组件的配置选项、事件处理和...

    ext+struts+spring小例子

    EXT JS 是一个强大的JavaScript库,主要用于构建富客户端应用程序,提供丰富的用户界面组件,如表格、面板、图表等。EXT JS 使用MVVM(Model-View-ViewModel)设计模式,使得前端数据和视图之间的绑定更加简单。在...

    Ext.net后台分页增删改

    它扩展了Sencha Ext JS库,提供了与ASP.NET MVC和Web Forms框架的深度集成。在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、...

    EXTJS 的 MVC 开发例子

    `Ext.data.Store`类提供了数据的加载、排序、过滤和分页等功能,同时,Store与Model之间通过`model`配置项关联,确保数据操作的一致性。 3. **View**:视图层主要负责用户界面的展示,EXTJS的视图通常由各种组件...

    extjs+struts2分页例子

    这个简单的例子展示了EXTJS如何利用Struts2来获取和展示分页数据,帮助开发者快速理解并应用到实际项目中。对于初学者来说,这是一个很好的起点,可以进一步探索EXTJS和Struts2的更多高级特性,如过滤、排序和自定义...

    Ext Js权威指南(.zip.001

    第1章 ext js 4开发入门 / 1 1.1 学习ext js必需的基础知识 / 1 1.2 json概述 / 3 1.2.1 认识json / 3 1.2.2 json的结构 / 3 1.2.3 json的例子 / 4 1.2.4 在javascript中使用json / 4 1.2.5 在.net中使用...

    ext + struts2 例子

    EXT是一个强大的JavaScript库,它提供了丰富的用户界面组件,用于构建富客户端应用。EXT 2.0是EXT的一个早期版本,尽管如此,它已经包含了大量功能强大的组件,如TreePanel(树形面板)、GridPanel(表格面板)和...

    Ext经典例子整合 快速上手必看

    4. **Grid分页**: GridPanel是EXTJS用来显示二维表格数据的主要组件,它可以实现数据的排序、筛选和分页等功能。分页功能是通过Pager组件实现的,它可以与Store配合,自动处理数据的加载和分页显示。开发者可以...

    Ext项目小框架介绍源码

    这个版本是Ext JS的一个重要里程碑,引入了许多新特性,如可配置的MVC模式、新的图表组件和改进的数据包。源码可能包括了Ext JS库的文件,开发者可以通过这些文件了解其内部工作原理,或者根据需求进行定制和扩展。 ...

    用Ext Scaffold插件打造Rails的Ext风格

    6. **性能优化**:可能会涉及一些最佳实践,如压缩JavaScript和CSS,优化加载速度,或者利用Ext JS的数据分页和虚拟滚动功能提高性能。 7. **示例应用**:可能提供了一个实际的例子,演示如何从零开始创建一个完整...

    一个基于Ext+Struts2+spring实现的级联分页示例程序源码例子

    "一个基于Ext+Struts2+Spring实现的级联分页示例程序源码例子"是一个很好的学习资源,它揭示了如何利用这三大框架来构建高效、灵活的Web应用。下面将详细解析这个项目的知识点。 首先,Ext是一个强大的JavaScript库...

    ExtGrid使用

    这个例子在.NET环境中展示了如何有效地使用ExtGrid,包括显示数据、增删改查(CRUD)操作以及分页功能。下面将详细介绍这些知识点。 1. **Ext JS**:Ext JS是一个用于构建富客户端Web应用的JavaScript框架,它提供...

    Extjs4MVC后台管理程序实现.pdf

    ExtJS4是一个强大的JavaScript前端框架,它采用Model-View-Controller(MVC)设计模式,使得构建复杂的Web应用程序变得更加容易和高效。MVC模式是软件工程中的一种设计模式,它将应用程序分为三个核心部分:模型...

    ExtJS4.2 MVC

    ExtJS4.2 MVC是一个基于JavaScript的前端框架,用于构建富客户端应用。MVC(Model-View-Controller)模式是软件工程中一种广泛使用的架构设计,它有助于将应用程序的业务逻辑、用户界面和数据管理分离开来,提高代码...

    js+ext超炫树形控件

    它基于MVC(Model-View-Controller)设计模式,提供了大量的组件和布局管理器,帮助开发者创建具有桌面应用级别的交互体验。 2. **树形控件基础**:树形控件在ExtJS中被称为`Ext.tree.Panel`,它允许用户展开和折叠...

    深入浅出Ext 光盘源码

    EXT是一个基于JavaScript的富客户端开发框架,由Sencha公司开发。它主要用于构建高性能、交互式的Web应用程序,尤其适合企业级的B/S系统。EXT提供了大量的UI组件,包括表格、表单、树形视图、面板、窗口等,同时具备...

Global site tag (gtag.js) - Google Analytics