Extjs4.2+webAPI+EF实现分页以及webapi的数据传值
由于不明白分页的总数是怎么计算,不知道他的分页方式所以花费了好多功夫,现在弄出来了与大家分享下
1.首先是EF的简历,想必大家都清楚:添加-〉新建项-〉数据-〉Ado。net实体数据模型
2.就是后台数据也就是apiController,前台需要两个数据,一个是数据的总条数,第二个是要查询的分页数据
所以我们要建立一个实体,用于返回数据传送,由于多个页面都使用,多以用到了泛型。代码如下:
public class PageData<T>
{
//数据总数
public int TotolRecord { get; set; } //需要返回的数据
public T Data { get; set; } }
3.组织需要向前台返回的数据
/// <summary>
/// 获取所有的监控信息
/// </summary>
/// <returns></returns>
public PageData<Monitor[]> Get([FromUri]string _dc, [FromUri] int page, [FromUri] int start, [FromUri] int limit)
{
OlandHIPDBInterfaceTrackEntities db = new OlandHIPDBInterfaceTrackEntities(); //返回数据包含数据总数
PageData<Monitor[]> returnData = new PageData<Monitor[]>(); IQueryable<Monitor> data = from item in db.Monitor
orderby item.ID
select item; returnData.TotolRecord = data.ToArray().Length; data=data.Skip<Monitor>(start); data=data.Take<Monitor>(limit); returnData.Data =data .ToArray<Monitor>(); return returnData;
}
好了,后台数据准备完毕,那么就开始Extjs部分的了
4.Extjs部分我就直接上代码了
Ext.require([
'*',
'Ext.toolbar.Paging',
'Scripts.*'
]) Ext.onReady(function () { Ext.define('InterfaceTrackModel', {
extend: 'Ext.data.Model',
fields: [{
name: 'ID',
type: 'int',
useNull: true
},
'Invoker',
'MachineName',
'MachineIP',
'InvokeDate',
'Interface',
'InterfaceDes',
'IsSuccessed',
'ConsumeTime',
'ErrorMessage',
'Remark'
]
}); var InterfaceTrackStore = Ext.create('Ext.data.Store', {
autoLoad: true,
autoSync: true,
model: 'InterfaceTrackModel', //设置分页大小
pageSize: 20,
proxy: {
type: 'rest',
url: 'api/InterfaceTrack',
reader: {
type: 'json',
root: 'Data',
//获取数据总数
totalProperty: 'TotolRecord'
},
writer: {
type: 'json'
}
}
}); var selModel = Ext.create('Ext.selection.CheckboxModel', {
width: 55
}); //将时间转化为 2011-08-20 00:00:00 格式
//解决Ext4的formPanel通过grid的store查询问题 2012.2.22 jzr
function dateFormat(value) {
if (null != value) {
//return Ext.Date.format(new Date(value), 'Y-m-d H:i:s');
return Ext.Date.format(new Date(value), 'Y-m-d H:i:s');
}
else {
return null;
}
} Ext.define('Scripts.InterfaceTrackGrid', {
extend: 'Ext.grid.GridPanel',
title: '接口监控',
id: 'InterfaceTrackGrid',
initComponent: function () {
Ext.apply(this, {
closable: true, //是否可关闭
width: 400,
height: 300,
frame: true, store: InterfaceTrackStore,
iconCls: 'icon-user',
// selModel: selModel, viewConfig: {
getRowClass: function (record) {
return record.get('IsSuccessed') ? '' : 'error-row';
}
}, columns: [Ext.create('Ext.grid.RowNumberer', { width: 35, text: '序号' }),
{
text: '编号',
width: 50,
sortable: true,
dataIndex: 'ID'
}, {
text: '调用者',
width: 80, dataIndex: 'Invoker' }, {
header: '机器名',
width: 80,
sortable: true,
dataIndex: 'MachineName' }, {
text: '机器IP',
width: 100,
// xtype: 'checkcolumn',
dataIndex: 'MachineIP' }, {
text: '调用时间',
width: 140,
sortable: true,
dataIndex: 'InvokeDate',
renderer: dateFormat }, {
text: '调用接口',
width: 120,
sortable: true,
dataIndex: 'Interface' }, {
text: '接口描述',
width: 140,
sortable: true,
dataIndex: 'InterfaceDes' }, {
text: '是否成功',
width: 80,
sortable: true,
dataIndex: 'IsSuccessed' }, {
text: '耗时',
width: 80,
sortable: true,
dataIndex: 'ConsumeTime' }, {
text: '错误信息',
width: 160,
sortable: true,
dataIndex: 'ErrorMessage' }, {
text: '备注',
width: 80,
sortable: true,
dataIndex: 'Remark' }],
bbar: Ext.create('Ext.PagingToolbar', {
store: InterfaceTrackStore,
displayInfo: true,
displayMsg: '显示{0}-{1}条,共计{2}条',
emptyMsg: "没有数据"
})
}),
this.callParent(arguments);
}
});
//加载数据
// InterfaceTrackStore.load({
// params: {
// start: 0,
// limit: 20
// }
// });
})
这里注意的地方,前台接受数据的时候
reader: {
type: 'json',
root: 'Data',
//获取数据总数
totalProperty: 'TotolRecord'
},
检测后台传过来的数据,分页数据对应的是Data键值对,数据总数据条数为
TotolRecord键值对 最终效果图:

这里面还设计了webaip的传值接受问题,可以参考 webapi下如何传值
Extjs4.2+webAPI+EF实现分页以及webapi的数据传值的更多相关文章
- Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)
现在领导又要增加功能,需要分页的时候,每页显示N条信息.由于是每个页面都要改,所有需要声明了一个扩展类代码如下: // Copyright : 欧蓝德畅电子技术有限公司. All rights res ...
- Asp.net WebApi + EF 单元测试架构 DbContext一站到底
其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Inc ...
- .net core webapi+EF Core
.net core webapi+EF Core 一.描述: EF Core必须下载.net core2.0版本 Micorsoft.EntityFrameworkCore:EF框架的核心包Micor ...
- EF查询分页
static List<T> GetPageList(Func<T,bool> whereLambda,Func<T,object> orderLambda,int ...
- WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 using System; using System.Linq; using System.Web; using S ...
- 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]
/**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- EF数据库初始化策略及种子数据的添加
EF数据库初始化策略及种子数据的添加 CreateDatabaseIfNotExists 判断当前数据库连接字符串对应的数据库是否存在,若不存在则根据代码定义的model进行创建 DropCreate ...
随机推荐
- ABP框架系列之五十一:(Timing-定时)
Introduction While some applications target a single timezone, some others target to many different ...
- Reading | 《C++ Primer Plus》(未完待续)
目录 一.概述和C++简史 1.早期语言的问题 2.面向对象编程OOP 3.泛型编程 二.入门 1.头文件 2.名称空间 3.cout输出 4.C++语句 5.函数 一.概述和C++简史 C++融合了 ...
- Spring-Cloud之Eureka排坑之旅
1 快速demo 1.0 环境说明 Intelli IDEA+Spring Boot 1.1 新建工程chap52(通过New Project->Spring Initializer-> ...
- AI for VS ,美团创新之处分析
微软在2017中发布了VS Tools for AI,旨在提升用户对于深度学习的需求体验.AI组件可以让我们迅速构建和训练深度学习的Project,其功能主要有开发,调试和部署深度学习和人工智能的解决 ...
- visual2017专业版MFC编程环境搭建及第一个MFC程序的创建
1.MFC介绍及环境搭建 MFC全程为Microsoft Foundation class Library,即微软的基本类库,MFC实际上是一个庞大的文件库,它由指向文件和源文件组成. 首先,打开vi ...
- 7.AOP编程
注解和xml混合使用 1.将所有的bean都配置xml中 <bean id="" class=""> 2.将所有的依赖都使用注解 @Autowire ...
- 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”>,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经 ...
- js中的块级作用域
概述 函数是js中最常见的作用域单元, 声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来, 这是有意为之的非常好的设计原则. 但是随着js的发展, 我们有了某个代码块(通常指{..}内部)隐藏 ...
- 仿B站项目(3)页面配置
页面配置 B站有很多页面,比如说首页啊,动画页啊,音乐页啊,舞蹈页啊,那就从首页开始. 通过观察首页,可以看见有很多模块除了内容之外,在布局颜色等方面都是一样的,所以我可以开发一些模板或者插件,到时候 ...
- iOS开发笔记-一种任意字体、颜色混排UILabel的实现
最近开发新App,射妓狮给的图上出现一种不同大小字体混排的Label,就像下面这种: 想了想,最简单的方法是使用多个UILabel排列显示,但是这样不仅麻烦而且效果也不好,索性自定义UILabel来尽 ...