Extjs4.2+webAPI+EF实现分页以及webapi的数据传值
时间:2022-05-03
本文章向大家介绍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下如何传值
- GeForce驱动EULA更新惹争议,NVIDIA的理由是这样的
- 关于HTML面试题汇总之visibility
- 加密狗进场暴富开始?请别侮辱区块链和游戏
- 程序猿的日常——Java基础之clone、序列化、字符串、数组
- [你必须知道的.NET] 第四回:后来居上:class和struct
- oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()
- 央行出台条码支付新规;美团打车将在7大城市上线;国产人工智能平台型芯片首发;苹果就降速门致歉
- 阿三又让全球看笑话,无人驾驶的地铁名不副实,还直接跑到大街上
- 盘点:2017年度这些科学大事件,哪个给您印象最深?
- 跳台阶问题
- mac下使用github
- CSS3新特性应用之结构与布局
- 程序猿的日常——Java基础之equals与hashCode
- 贾康:智能金融需在发展和规范中掌握理性权衡点
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《一起学sentinel》一、一起搭建sentinel服务
- InfluxDB和Grafana实现传感器数据的存储和可视化
- 样本相关性分析
- Android 序列化 Serializable与Parcelable
- 《一起学sentinel》二、初探sentinel的Slot
- Redis突然报错,今晚又不能回家了...
- 查询ElasticSearch:用SQL代替DSL
- Java开源框架中的设计模式以及应用场景
- 统一定制API返回格式,我只做了这几件事
- 《一起学sentinel》三、Slot的子类及实现之NodeSelectorSlot和ClusterBuilderSlot
- 《一起学sentinel》四、Slot的子类及实现之LogSlot和StatisticSlot
- 《一起学sentinel》五、Slot的子类及实现之AuthoritySlot和SystemSlot
- Python 之pyaudio使用随笔
- Determining 32 vs 64 bit in C++
- 在线、离线激活鉴权实战