本篇开始模拟一个船舶管理系统,提供查询、添加、修改船舶的功能,这里介绍其中的数据展示和查询功能。

目录

1. 数据展示

2. 数据查询

3. 在线演示

1. 数据展示

在这里我们将模拟一个船舶管理系统,并提供查询、添加、修改的功能。

大致的目录结构如下:

ShipMgrTab.js :船舶业务的入口。

controller 目录:存放船舶业务的逻辑控制文件。

model 目录:存放船舶业务的model文件。

store 目录 :存放船舶业务的store文件。

view 目录 :存放船舶业务的组件文件。

1.1 设定Model

在展示数据之前要先做一些准备功能,比如业务与服务器数据交互的方式。

Model表示业务的实体对象,在这里设定船舶的Model:

Ext.define('App.ShipMgr.model.ShipModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'ShipId', type: 'string', remark: '船舶ID' },
{ name: 'ShipName', type: 'string', remark: '船舶名称' },
{ name: 'State', type: 'string', remark: '状态' },
{ name: 'StateName', type: 'string', remark: '状态名称' },
{ name: 'Tonnage', type: 'string', remark: '吨位' },
{ name: 'LoadNumber', type: 'int', remark: '核载人数' },
]
});

  

1.2 设定Store

Store封装了一个Model对象的缓存,通过 Proxy 加载数据,并提供了对数据进行排序、筛选和查询的功能。 (在这里只是简单写出需要的Model和Store;若需要对Mode、 Store和Proxy三者具体关系的了解可以访问 http://docs.sencha.com/extjs/4.2.1/#!/guide/data)

var shipMgrStore = Ext.create('Ext.data.Store', {
model: 'App.ShipMgr.model.ShipModel',
pageSize: 25,
autoLoad: true,
proxy: {
type: 'ajax',
url: '/Business/ShipMgr/Query',
reader: {
reader: 'json',
root: 'data',
totalProperty: 'rowCount',
},
actionMethods: {
create: 'Post'
}
}
});

1.3 创建Grid组件

Grid组件常用语业务中数据的列表展示。

// 创建grid
var shipMgrGrid = Ext.create('Ext.grid.Panel', {
store: shipMgrStore,
columnLines: true,
rowLines: true,
bbar: Ext.create('Ext.toolbar.Paging', {
store: shipMgrStore,
pageSize: 25,
displayInfo: true,
displayMsg: '当前显示第{0}行到第{1}行,一共{2}行。',
emptyMsg: '没有任何记录'
}),
columns: [
Ext.create('Ext.grid.RowNumberer', {
text: '序号',
width: 50
}), {
text: '船舶名称',
dataIndex: 'ShipName',
flex:1
}, {
text: '状态名称',
dataIndex: 'StateName',
width: 150
}, {
text: '吨位',
dataIndex: 'Tonnage',
width: 150
}, {
text: '核载人数',
dataIndex: 'LoadNumber',
width: 150
}
]
});

1.4 服务器返回的数据格式

在这里shipMgrStore接收的是json格式的数据:

{"success":true,
"rowCount":100,
"data":[
{"ShipId":"989f1ace-5961-46d4-8f93-b56decb893af","ShipName":"船舶1","StateName":"离线","Tonnage":1.0,"LoadNumber":1},
{"ShipId":"f4dc1dd9-a173-4822-b3d3-4b3caa12820b","ShipName":"船舶2","StateName":"在线","Tonnage":1.0,"LoadNumber":1},
{"ShipId":"7b33d073-412b-460d-8e43-4f2d061d39a0","ShipName":"船舶3","StateName":"在线","Tonnage":2.0,"LoadNumber":2},
{"ShipId":"6ad72f6d-a4e6-4637-ab8b-038b9a7fc1b1","ShipName":"船舶4","StateName":"离线","Tonnage":3.0,"LoadNumber":3},
{"ShipId":"c3614867-a722-4ca8-961f-1324d5da4ad2","ShipName":"船舶5","StateName":"在线","Tonnage":1.0,"LoadNumber":4},
{"ShipId":"526befcf-0202-45b6-8175-4ca29a698acb","ShipName":"船舶6","StateName":"在线","Tonnage":5.0,"LoadNumber":1},
{"ShipId":"058295b4-e4d6-4fb6-b232-ed0e07515571","ShipName":"船舶7","StateName":"离线","Tonnage":6.0,"LoadNumber":6}
]}

1.5 运行图

2. 数据查询

查询功能比较简单,只需要shipMgrStore在每次请求时附加上查询条件。

2.1 创建一个搜索框

首先在shipMgrGrid的上方工具栏处创建一个文本输入框和一个查询按钮。

点击查询按钮,会触发shipMgrStore.loadPage(1)事件:

// 创建工具条
var shipMgrToolBarPanel = Ext.create('Ext.panel.Panel', {
width: '100%',
height: 40,
bodyBorder: false,
border: false,
region: 'north',
tbar: [
Ext.create('Ext.form.field.Text', {
name: 'SearchTxt',
emptyText: '请输入船舶名称',
width: 200,
enableKeyEvents: true,
listeners: {
keyup: function (thisControl, e, eOpts) {
if (e.button == 12) { // 若敲的键为回车,就执行【查询】搜索
shipMgrToolBarPanel.down('[name=QueryBtn]').handler();
}
}
}
}),
Ext.create('Ext.Action', {
icon: 'Resources/icon/find.png',
text: '查询',
name: 'QueryBtn',
handler: function () {
// 设置搜索条件
searchConditionObj.SearchTxt = shipMgrToolBarPanel.down('[name=SearchTxt]').value;
shipMgrStore.loadPage(1);
}
})
]
});

2.2. store附加搜索条件

shipMgrStore每次请求时都附加搜索条件:

// 创建store
var shipMgrStore = Ext.create('Ext.data.Store', {
model: 'App.ShipMgr.model.ShipModel',
pageSize: 25,
autoLoad: true,
proxy: {
type: 'ajax',
url: '/Business/ShipMgr/Query',
reader: {
reader: 'json',
root: 'data',
totalProperty: 'rowCount',
},
actionMethods: {
create: 'Post'
}
},
listeners: {
beforeload: function (thisStore, record, opts) {
// 附加检索条件
thisStore.proxy.extraParams = searchConditionObj;
}
}
});

2.3 运行图

3. 在线演示

在线演示http://www.akmsg.com/ExtJS/index.html#App.ShipMgr.ShipMgrTab

End
菜单加载中...

ExtJS 4.2 业务开发(二)数据展示和查询的更多相关文章

  1. ExtJS 4.2 业务开发(三)数据添加和修改

    接上面的船舶管理业务,这里介绍添加和修改操作. 目录 1. 添加操作 2. 修改操作 3. 在线演示 1. 添加操作 1.1 创建AddShipWindow.js 在业务中的view目录下创建一个Ad ...

  2. 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结

    一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...

  3. ExtJS 4.2 业务开发(一)主页搭建

    本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...

  4. 利用HTML5和echarts开发大数据展示及大屏炫酷统计系统

    想这样的页面统计及展示系统都是通过echarts来发开的及ajax数据处理,echarts主要是案例,在案例上修改即可,填充数据 echarts的demo案例如下: http://echarts.ba ...

  5. iOS开发UI篇—无限轮播(新闻数据展示)

    iOS开发UI篇—无限轮播(新闻数据展示) 一.实现效果        二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的pli ...

  6. C#的百度地图开发(二)转换JSON数据为相应的类

    原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...

  7. TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...

  8. 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)

    一.由于项目需要进行手机看板展示设计及开发展示效果图如下:

  9. 大数据开发实战:Stream SQL实时开发二

    1.介绍 本节主要利用Stream SQL进行实时开发实战,回顾Beam的API和Hadoop MapReduce的API,会发现Google将实际业务对数据的各种操作进行了抽象,多变的数据需求抽象为 ...

随机推荐

  1. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  2. Cocos2d Android 环境搭建

    1.在开始之前,需要先准备好资源如下,如果安卓开发环境有了直接装第3.4. 1.JDK      点击下载 (1.6) 2.ADT(已经自带Android SDK)点击下载 3.NDK 点击下载 4. ...

  3. Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩

    目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...

  4. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  5. CSS 3学习——transition 过渡

    以下内容根据官方规范翻译以及自己的理解整理. 1.介绍 这篇文档介绍能够实现隐式过渡的CSS新特性.文档中介绍的CSS新特性描述了CSS属性的值如何在给定的时间内平滑地从一个值变为另一个值. 2.过渡 ...

  6. 代码的坏味道(15)——冗余类(Lazy Class)

    坏味道--冗余类(Lazy Class) 特征 理解和维护类总是费时费力的.如果一个类不值得你花费精力,它就应该被删除. 问题原因 也许一个类的初始设计是一个功能完全的类,然而随着代码的变迁,变得没什 ...

  7. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

  8. 【干货分享】流程DEMO-费用报销

    流程名: 费用报销 业务描述: 流程发起时,要选择需要关联的事务审批单,会检查是否超申请,如果不超申请,可以直接发起流程,如果超了申请,需要检查预算,如果预算不够,将不允许发起报销申请,如果预算够用, ...

  9. DevOps对于企业IT的价值

    其实从敏捷延展开的 DevOps 概念很早就已经被提出,不过由于配套的技术成熟度水平层次不齐, DevOps 的价值一直没有有效地发挥出来.现如今,随着容器技术的发展, DevOps 在企业中的实践难 ...

  10. 超详细mysql left join,right join,inner join用法分析

    下面是例子分析表A记录如下: aID        aNum 1           a20050111 2           a20050112 3           a20050113 4   ...