model和columns生成好了,下面要修改一下Module.js和Grid.js中的代码,使其能够协同工作。

/**
* 一个模块的主控界面的容器,用来安放各个模块控件以及协调他们之间的关系
*/
Ext.define('app.view.module.Module', {
extend: 'Ext.panel.Panel', alias: 'widget.modulepanel', requires: ['app.view.module.ModuleController',
'app.view.module.ModuleModel', 'app.view.module.factory.ModelFactory'], uses: ['app.view.module.region.Navigate', 'app.view.module.region.Grid',
'app.view.module.region.Detail'], controller: 'module',
// MVVM架构的控制器的名称,main控制器会自动加载,这个控制器不会自动加载,需要在requires中指定,不知道是为什么
viewModel: {
type: 'module'
},
bind: {
// glyph : '{tf_glyph}', // 这一个绑定是无效的,在tabPanel渲染过后,再修改这个值,将不会有任何效果。
title: '{tf_title}' // 这个绑定是有效的,可以根据ModuleModel中的值来设置title
},
layout: 'border', // 模块采用border布局 initComponent: function () {
this.glyph = this.getViewModel().get('tf_glyph'); // 由于上面的glyph的bind无效,因此需要在这里加入glyph的设置
this.model = app.view.module.factory.ModelFactory.getModelByModule(this
.getViewModel()); console.log(this.model); this.store = Ext.create('Ext.data.Store', {
model: this.model,
autoLoad: true,
proxy: {
type: 'localstorage',
id: 'module' + '__' + this.getViewModel().get('tf_moduleName')
}
}) this.items = [{
xtype: 'navigate', // 导航区域
region: 'west',
width: 250,
collapsible: true,
split: true
}, {
xtype: 'modulegrid', // 模块的grid显示区域
region: 'center',
store: this.store
}, {
xtype: 'recorddetail', // 记录明细
region: 'east',
width: 250,
collapsible: true, // 可以折叠隐藏
collapseMode: 'mini', // 折叠陷藏模式
split: true
// 可以拖动大小
}] this.callParent();
} })

在Module.js中,根据modelFactory创建model,并且创建一个Store,使用了自动生成的model,由于现在还没有和后台建立关系,因此先把数据存在本地数据中。见下面的代码,type:'localstorage',就是使用本地存贮来存放数据。

this.store = Ext.create('Ext.data.Store', {
model: this.model,
autoLoad: true,
proxy: {
type: 'localstorage',
id: 'module' + '__' + this.getViewModel().get('tf_moduleName')
}
})

Grid.js中也修改:

/**
* 模块数据的主显示区域,继承自Grid
*/ Ext.define('app.view.module.region.Grid', {
extend: 'Ext.grid.Panel',
alias: 'widget.modulegrid',
uses: ['app.view.module.region.GridToolbar',
'app.view.module.factory.ColumnsFactory'],
bind: {
title: '{tf_title}' // 数据绑定到ModuleModel中的tf_title
},
dockedItems: [{
xtype: 'gridtoolbar', // 按钮toolbar
dock: 'top'
}],
columnLines: true, // 加上表格线
viewConfig: {
stripeRows: true, // 奇偶行不同底色
enableTextSelection: true
},
initComponent: function () {
var viewModel = this.up('modulepanel').getViewModel();
// 创建grid列
this.columns = app.view.module.factory.ColumnsFactory.getColumns(
viewModel, 10);
this.callParent();
}
})

在Grid中加入columns 即可。经过以上步骤,可以展示界面了。

下面手动增加几条记录,给新增按钮增加一个事件执行,在GridToolbar的“新增“下面增加 handler :'addRecord',

/**
* 模块的控制器
*/ Ext.define('app.view.module.ModuleController', {
extend: 'Ext.app.ViewController', requires: ['Ext.MessageBox', 'Ext.window.Toast'], alias: 'controller.module', init: function () {
console.log('modulecontroller.init')
}, addRecord: function () {
var grid = this.getView().down('modulegrid');
var model = Ext.create(grid.getStore().model);
model.set('tf_id', 1);
model.set('tf_name', '太湖花园小区建设');
model.set('tf_code', '2004-01');
model.set('tf_squaremeter', 12000);
model.set('tf_budget', 3800000);
model.set('tf_rjl', 0.67);
model.set('tf_startDate', new Date());
model.set('tf_endDate', new Date());
model.set('tf_isValid', false);
model.set('tf_m3', 1239.24); grid.getStore().add(model);
console.log(model);
grid.getStore().sync();
} })

点击几下“新增“按钮,点入几条记录。

14、手把手教你Extjs5(十四)模块字段和Grid列的定义[2]的更多相关文章

  1. 13、手把手教你Extjs5(十三)模块字段和Grid列的定义[1]

    这一节加入模块自定义字段,并根据这些字段生成model.然后再定义grid中的分组和列.从这一切开始真正进入到了模块自定义的节奏当中,代码的复杂度和技巧性也大大提高.先从模块字段的自定义开始.先看一下 ...

  2. 手把手教你mysql(十)索引

    手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...

  3. 22、手把手教你Extjs5(二十二)模块Form的自定义的设计[1]

    下面开始设计和完成一个简单的Form的自定义过程.先准备数据,在ModuleModel.js中的data属性下面,加入自定义Form的参数定义,下面的代码中定义了一个新的属性tf_formScheme ...

  4. 20、手把手教你Extjs5(二十)模块Grid的多列表方案

    对于有很多字段的模块在一个grid中显示所有的字段,会显得很臃肿,对于不同的用户其侧重的字段类型也不尽相同,因此就有必要为Grid的列表设计多个方案.在这个自定义系统进行设计的时候,我已经将这部分内容 ...

  5. 19、手把手教你Extjs5(十九)模块Grid的其他功能的设想

    经过对自定义模块和Grid的设计和编码,现在已经能对一个有配置信息的模块来生成界面并进行一些简单的CURD操作.由于这是一个全解释性的前台的架构,因此你想到的任何新主意都可以放到所有的模块中. 比如对 ...

  6. 24、手把手教你Extjs5(二十四)模块Form的自定义的设计[3]

    自定义的Form已经可以运行了,下面改一下配置,把Form里面的FieldSet放在Tab之下.修改一下ModuleModel.js中的data下的tf_FormSchemes下的方案,增加一个属性. ...

  7. 18、手把手教你Extjs5(十八)模块记录的拖放删除、拖放复制新增

    网页当中的拖放(drag-drop)是比较有趣的操作,extjs5中很好的封装了拖放的动作,也有各种类来支持,但是要学好“拖放”这个东西真是很难,特别是象我这样英语不好的人,看不太懂官网上的说明,做一 ...

  8. 12、手把手教你Extjs5(十二)执行菜单命令在tabPanel中显示模块

    上面设计好了一个模块的主界面,下面通过菜单命令的执行来把这个模块加入到主界面当中.在MainModule.js中有一个函数,生成了当前的菜单数据: // 根据data.systemMenu生成菜单条和 ...

  9. 10、手把手教你Extjs5(十)自定义模块的设计

    从这一节开始我们来设计并完成一个自定义模块.我们先来确定一个独立的模块的所能定义的一些模块信息.以下信息只是我自己在开发过程中想到或用到的,希望有新的想法的或者有建议的跟贴回复. 一个独立模块包含以下 ...

随机推荐

  1. CSS position 属性

    position: relative | absolute | static | fixed 参考网站:http://blog.csdn.net/dyllove98/article/details/8 ...

  2. 最近关于ACM训练与算法的总结

            到了大四以后越来越意识到基础知识的重要性,很多高屋建瓴的观点与想法都是建立在坚实的基础之上的, 招式只有在强劲的内力下才能发挥最大的作用,曾经有段时间我有这样的想法:我们出去以后和其他 ...

  3. 【转】linux grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  4. skia入门

    SkBitmap bmp; bmp.setConfig(SkBitmap::kARGB_8888_Config, rect.Width(), rect.Height()); bmp.allocPixe ...

  5. python 压缩 解压缩 文件

    1. 用zipfile模块打包文件或是目录.解压zip文件 http://wangwei007.blog.51cto.com/68019/1045577 #!/usr/bin/env python # ...

  6. c# 去除文本的html标签

    public static string ContentReplace(string input) { input = Regex.Replace(input, @"<(.[^> ...

  7. hadoop yarn 易理解

    Hadoop 和 MRv1 简单介绍 Hadoop 集群可从单一节点(其中所有 Hadoop 实体都在同一个节点上运行)扩展到数千个节点(其中的功能分散在各个节点之间,以增加并行处理活动).图 1 演 ...

  8. CodeForces 546 D. Soldier and Number Game(素数有关)

    Description Two soldiers are playing a game. At the beginning first of them chooses a positive integ ...

  9. 图片处理中的Dithering技术

    话说二战的时候,美国轰炸机每次执行任务,除了满载着威力强大的炸弹以外,还常常要装配一台计算机,飞机飞行方向和投弹的抛物线的计算都离不开这台机器.可是世界上第一台电子计算机在二战结束后才发明,轰炸机上当 ...

  10. ecshop后台增加模块菜单项详细教程(图文)

    有的时候我们会在后台增加新的功能,菜单项是一个程序的入口,是必不可少的,如何在后台增加菜单项呢,大家可以参考下面的教程:   例如:想在后台左侧的菜单栏的"促销管理"下添加一个&q ...