EXTJS 如何实现类似comet 异步刷新grid(自动刷新)

简介:
原理:变更思路,通过客户端解决问题。
知识要点
1.在Ext.data.Store中添加刷新数据的计划任务。
2.在beforeload中设置控制参数。
3.grid绑定静态的Store,该Store不和服务器端打交道
4.通过新的Store从服务器端取得单步的记录赋值给grid绑定的store

 
该模块用于测试日志的展示。
代码如下:
function load_task_excute_result(taskid)
{

Ext.override(Ext.data.Store, {
startAutoRefresh : function(interval, params, callback, refreshNow){
if(refreshNow){
this.load({params:params, callback:callback});
}
if(this.autoRefreshProcId){
clearInterval(this.autoRefreshProcId);
}
this.autoRefreshProcId = setInterval(this.load.createDelegate(this, [{params:params, callback:callback}]), interval*1000);
}
});

var caseid = -1;
// **每行测试任务格式**/
var task_result_record = Ext.data.Record.create([{
name : 'testcasename',
type : 'string'
}, {
name : 'description',
type : 'string'
}, {
name : 'status',
type : 'int'
}, {
name : 'status_str',
type : 'string'
}, {
name : 'caseid',
type : 'int'
}]);

var taskresult_list_grid_store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'GetTaskResult',
method : 'POST'
}),
reader : new Ext.data.JsonReader({
root : "root",
id : 'taskresult_list_grid_store',
totalProperty : 'totalCount'
}, task_result_record)
});




bt_new = new Ext.Button({
xtype : 'button',
text : '空格',
handler : reload_data
});


p_buttons = new Ext.Panel({
xtype : 'panel',
layout : 'column',
border : true,
items : [bt_new]
});



var taskresult_list_grid = new Ext.grid.GridPanel({
store : taskresult_list_grid_store,
id:'taskresult_list_grid',
height : 630,
columnLines : false,
tbar : [p_buttons],
autoScroll:true,
columns : [{
id : 'testcasename',
header : "用例名称",
width : 60,
dataIndex : 'testcasename'
}, {
id : 'description',
header : "描述",
width : 200,
dataIndex : 'description'
}, {
id : 'status_str',
header : "状态",
width : 100,
dataIndex : 'status_str'
}]
});

var win_task_result = new Ext.Window({
title : "任务执行结果",
closable : true,
width : 650,
height : 550,
plain : true,
resizable : true
});
win_task_result.addListener('close', winclose);

function winclose()
{
clearInterval(taskresult_onerecord_store.autoRefreshProcId);
}
/**取得单条记录的集合**/
var taskresult_onerecord_store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'GetTaskResult',
method : 'POST'
}),
reader : new Ext.data.JsonReader({
root : "root",
id : 'taskresult_onerecord_store',
totalProperty : 'totalCount'
}, task_result_record)
});
taskresult_onerecord_store.on('beforeload', function() {
Ext.apply(this.baseParams, {
caseid:caseid
});
});


reload_data();
win_task_result.add(taskresult_list_grid);
win_task_result.show();



function reload_data()
{
myparam = {
taskid : taskid,
caseid:caseid,
start : 0,
limit : 1
};
taskresult_onerecord_store.startAutoRefresh(3,myparam,ls_callback,true);
}

function ls_callback()
{
var rec = taskresult_onerecord_store.getAt(0);
if (rec != null)
taskresult_list_grid_store.add(rec);
caseid = rec.get('caseid');
//alert(caseid);
}




}
 


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/751904,如需转载请自行联系原作者
相关文章
|
机器学习/深度学习 人工智能 算法
首个像人类一样思考的网络!Nature子刊:AI模拟人类感知决策
【9月更文挑战第8天】近日,《自然》子刊发表的一篇关于RTNet神经网络的论文引起广泛关注。RTNet能模拟人类感知决策思维,其表现与人类相近,在反应时间和准确率上表现出色。这项研究证明了神经网络可模拟人类思维方式,为人工智能发展带来新启示。尽管存在争议,如是否真正理解人类思维机制以及潜在的伦理问题,但RTNet为人工智能技术突破及理解人类思维机制提供了新途径。论文详细内容见《自然》官网。
236 3
|
JSON Java fastjson
简单实现_实体类与Json字符串互相转换
简单实现_实体类与Json字符串互相转换
290 1
|
网络协议 网络性能优化 数据安全/隐私保护
计算机网络基础知识和术语(二)---分层结构模型
计算机网络基础知识和术语(二)---分层结构模型
217 1
|
JSON 关系型数据库 MySQL
Mysql中JSON操作函数JSON_EXTRACT()
Mysql中JSON操作函数JSON_EXTRACT()
|
存储 消息中间件 缓存
Netty入门到超神系列-零拷贝技术
内存主要作用是在计算机运行时为操作系统和各种程序提供临时储存,操作系统的进程和进程之间是共享CPU和内存资源的。为了防止内存泄露需要一套完善且高效的内存管理机制。因此现代操作系提供了一种基于主内存抽象出来的概念:虚拟内存(Virtual Memory)。 虚拟内存 虚拟内存是计算机系统内存管理的一种技术,主要为每个进程提供私有的地址空间,让每个进程拥有一片连续完整的内存空间。而实际上,虚拟内存通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换,加载到物理内存中来 物理内存 物理内存指通过内存条而获得的内存空间,而虚拟内存则是指将硬盘的一块区域划分来
364 0
|
JSON 前端开发 JavaScript
Spring MVC 实战:响应字段默认值设置
前言 到今天为止,相信大家开发 Web 项目应该都是前后端分离了吧?前后端分离中一般会使用 json 作为前后端的数据交换格式。json 中可以包含数值、字符串、json 对象、数组等等。
452 0
Spring MVC 实战:响应字段默认值设置
|
计算机视觉 算法 Go
摄像头距离标定方法研究(得到像素和毫米的转换比)
一般在高精度测量时需要做以下几个标定,一光学畸变标定(如果您不是用的软件镜头,一般都必须标定),二投影畸变的标定,也就是因为您安装位置误差代表的图像畸变校正,三物像空间的标定,也就是具体算出每个像素对应物空间的尺寸。
1628 0
|
前端开发 rax Unix
|
4天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1106 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
533 10

热门文章

最新文章