Dojo1.6官方教程:连接DataGrid和Store

基于Wazuh的漏洞检测与PCI DSS合规自动化实践指南 在当今数字化环境中,安全合规已成为企业运营的基石。安全信息和事件管理(SIEM)系统作为安全运营的核心,通过集中收集、关联分析和可视化呈现日志与安全事件,实现对威胁的实时检测与响应。其技术价值在于将分散的安全数据转化为可操作的威胁情报,提升安全团队的事件调查与响应效率。主机入侵检测系统(HIDS)则侧重于端点安全,通过监控系统调用、文件完整性和进程行为,提供更深层的安全可见性。结合自动化合规框架,这些技术能够将静态的策略要求转化为持续的技术验证,广泛应用于金融、电商等需满足PCI DSS等强合规要求的场景。 阅读详情

原作者:Kris Zyp
原文链接:http://dojotoolkit.org/documentation/tutorials/1.6/store_driven_grid/
译者:zhuxw(zhuxw1984@gmail.com)


鉴于DataGrid对于表格数据的有效呈现,它早已成为许多应用的核心组件之一。在本教程中,我们将着眼于如何为grid连上store(Dojo的客户端数据集——译者注),以进行快捷高效的数据读取和更新。

难度:初等
Dojo版本:1.6

DataGrid和Store

首先,我们将创建一个store。在本例中将创建一个JsonRest store,它将通过JSON REST HTTP成为连接grid和我们的服务器的纽带。创建代码如下:

dojo.require("dojo.store.JsonRest");
myStore = new dojo.store.JsonRest({target:"MyData/"});
以上代码表明这个store将向给定的URL("MyData/")发送请求,以获取或修改数据。

注意:其他类型的store也能使用,例如dojo/store/Memory(原文有误,并不存在dojo/data/Memory。 ——译者注),也能够驱动DataGrid。然而本教程只采用 JsonRest store。


现在我们可以创建DataGrid了。在1.6版中DataGrid仍然基于dojo.data API,因此我们将使用接口适配器dojo.data.ObjectStore来连接DataGrid和我们刚刚创建的store。DataGrid采用标准的Dojo小部件的构造方式,因此我们可以用我们的store作为参数来实例化一个DataGrid(同时请确保已经导入了正确的CSS文件(例如使用claro主题的话,可导入dojox/grid/resources/claroGrid.css。——译者注))
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ObjectStore");
dojo.ready(function(){
    grid = new dojox.grid.DataGrid({
        store: dataStore = dojo.data.ObjectStore({objectStore: myStore}),
        structure: [
            {name:"State Name", field:"name", width: "200px"},
            {name:"Abbreviation", field:"abbreviation", width: "200px"}
        ]
    }, "target-node-id"); // make sure you have a target HTML element with this id
    grid.startup();
});
现在我们已经创建好了grid,当它启动完成后(即调用grid.startup()后——译者注),将调用store的query()方法,从而触发一个请求来获取数据。服务器需要返回一个包含数据的JSON数组作为响应,这样,grid就会将这些数据渲染出来。这个JSON数组形式的响应看上去就像这样:

[
    {"id":0,"name":"Alabama","abbreviation":"AL","capital":"Montgomery"},
    {"id":1,"name":"Alaska","abbreviation":"AK","capital":"Juneau"}
]
【示例】

好了,现在我们已经有了一个可以正常工作的grid,它能从我们的服务器获取数据。接下来我们来看一下如何增强我们这个组件。

分页

通过响应滚动鼠标滚轮事件来实现即时分页是Dojo DataGrid的强大功能之一。它为浏览大数据集提供了无缝、直观的用户体验——无需点击任何分页控件,只需简单地滚动滚轮即可看到更多数据。这种即时分页是通过向store不断发送一种特殊的请求实现的,这种请求限制了每次返回的数据行数。grid将给store的query()方法传一个请求对象作为其第二个参数,这个对象中有两个属性:start和count。JsonRest store通过HTTP头部属性Range将这两个参数发送到服务器端。这是一个对于可伸缩性非常重要的特性,因为这使得我们能够延迟加载在可视范围之外的行,而不是一下子加载所有数据。向服务器发出的第一个请求如下所示(你可以在浏览器的调试工具中方便地查看这些请求):
GET /MyData/ HTTP/1.1
Range: items=0-19
...
http服务器可以通过Range头来确定需要向客户端发送多少行数据(例如,可以把这个Range头转化为MySQL服务器的LIMIT或OFFSET参数)。对于大规模的数据集,当你将grid向下滚动时,将触发后续的请求。这些后续请求也都具有Range参数,只不过偏移量(起始行号)不同罢了。grid并不直接向服务器发送请求,而是调用store的函数(这些都是自动完成的):
myStore.query("", {start: 0, count: 20}).then(...grid's callback...);

排序

DataGrid还支持在点击列头时触发对数据排序的请求。出于性能考虑,grid将实际的排序工作交给了store去做,因为在数据库中进行排序的效率是最高的。当点击一列时,grid将向store发送一个带有sort参数的新请求,这个参数通过query()方法的第二个形参(是一个参数对象)传入。对于JsonRest store来说,这将告诉服务器,返回的数据需要按照某个属性排序(在本例中是“name”属性):
GET /MyData/?sort(+name) HTTP/1.1
Range: items=0-19
...
grid内部通过下面的逻辑向store发出排序请求:
myStore.query("", {start: 0, count: 20, sort:[{attribute:"name"}]}).
        then(...grid's callback...);

grid这种与store的交互方式有一个很重要的特性,那就是这种请求数据的方式使得store的数据视图保持独立。这意味着如果我们在grid外直接向store请求数据,对于grid的显示是没有任何影响的。换句话说,grid对于store的请求只限于其自身,与其他请求是相互独立的。你无法直接对store排序,你只能获取一个排好序的数据视图,这个数据视图就是当你点击列头时grid显示的内容。


过滤

除了排序视图外,我们还可以创建过滤视图。这可以通过setQuery()方法做到。DataGrid将把这些参数传给store(和排序与分页一样,过滤数据也最好在数据库层面完成,这样的效率最高)。例如,过滤出所有缩写为“NY”的行,只需要这样写:
grid.setQuery({abbreviation: "NY"});
这句话将触发一个如下请求:
GET /MyData/?abbreviation=NY HTTP/1.1
Range: items=0-19
...
这个请求也将被转化为合适的数据库查询。

在Grid内部,传给setQuery方法的这个请求是作为store.query()方法的第一个参数。如果使用的是JsonRest store,这个请求最终会转化为字符串,接在URL后面以http GET方法的形式发送到服务器端。


编辑Grid

DataGrid支持双击后(或单击后)直接编辑单元格,可以提供很好的用户体验。DataGrid通过统一的数据接口将改动写回store。一旦编辑了一个单元格,改变后的数据通过Dojo数据适配器的setValue方法写回,在未保存之前暂时留在适配器中,直到调用了save()方法:
dataStore.save();
调用save()方法后,所有未保存的改动都会通过put()方法保存到store中。


注意:DataGrid经常需要通过ID获取对象。为了避免向服务器发送多余的请求,还可以为store加上一层Cache缓存,从而在本地快速存取缓存的对象:
dojo.require("dojo.store.JsonRest");
dojo.require("dojo.store.Memory");
dojo.require("dojo.store.Cache");
myStore = dojo.store.Cache(
    dojo.store.JsonRest({target:"MyData/"}), 
    dojo.store.Memory());

结论

DataGrid是一个功能强大、丰富的表格控件,提供伸缩式的表格数据渲染,还包括排序、过滤、列移动、选择、编辑、键盘导航等等。DataGrid与store的紧密联系使得在Grid中对数据处理进行配置非常容易。



dojo扩展grid(带刷新函数复选框等功能).js 立即下载

相关推荐

dojo链接数据mySQL,使用post方式发送数组

dojo1.9使用post方式发送数组,链接数据库,并将返回的数据进行解析。

Dojo Store 简介

翻译自 https://github.com/dojo/framework/blob/master/docs/en/stores/introduction.md 介绍 Dojo store 提供可预测的、一致的状态容器,内置了对共享状态管理模式的支持。 Dojo store 包提供了一个集中式存储,为应用程序提供真正的单一数据源。Dojo 应用程序的操作使用单向数据流;因此,所有应用程序数据遵循相...

caisao7252的博客 247

双目相机立体匹配算法概述(含Python代码)

立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。

m0_59257547的博客 8292

[我被Dojo坑出翔]Grid刷新

各位看官,如果你已经被Dojo蹩脚的document坑得遍体鳞伤,那么请淡定~带上一斤毛嗑,泡一杯法(第四声)国贵族醇香丝滑速溶咖啡,来围观本人刚刚灰头土脸爬出来的这个陨石洞。 如果你看了Document以为用setQuery({id : *})就能让高大上Dojo给你来一次Grid的刷新,那你就太天真了,Dojo永远不会让你这么轻易得完成刷新grid这种“高难度”动作! 没有错!一次...

iteye_17242的博客 334

一文搞定 ST22 短转储 MEMORY_NO_MORE_PAGING:看懂 SAP Paging 机制,参数 rdisp/PG_SHM 与 rdisp/PG_MAXFS 怎么设才稳

SAP系统MEMORY_NO_MORE_PAGING错误通常源于Paging资源耗尽而非物理内存不足。关键排查点包括:通过ST22确认错误类型,ST02监控Paging使用情况,检查工作进程trace中的"no more free blocks"提示。解决方案建议将rdisp/PG_SHM和rdisp/PG_MAXFS设为相同值(如250000块≈2GB),使Paging完全在内存中运行。同时需优化易耗Paging的代码逻辑,如避免滥用EXTRACT命令和超大内存对象传输。典型案例如月末

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 334

广东省道路工程检测练习试题(判断题)真题

按下式计算小于某粒径颗粒质量百分数:X=(A/B)x100( )49.、挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测。95.挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测( )107.以干密度 pd 为纵坐标,含水率w为横坐标,绘 pd-w 关系曲线,曲线上峰值点的纵、横坐标分别为最大干密度和最佳含水率( )

ZShy001238的博客 684

Top 5 Grid Infrastructure Startup Issues

Top 5 Grid Infrastructure Startup Issues [ID 1368382.1] Applies to: Oracle Server - Enterprise Edition - Version 11.2.0.1 and later Information in this document applies to any platform.

renfengjun 5113

跨境电商产品信息抓取:使用Python爬虫进行市场分析

跨境电商平台是指为不同国家和地区的买卖双方提供在线交易服务的电子商务平台。亚马逊(Amazon):全球最大的电商平台之一,提供丰富的商品种类和全球配送服务。eBay:全球知名的在线拍卖和购物网站,支持个人和企业卖家。速卖通(AliExpress):阿里巴巴旗下的跨境电商平台,主要面向全球消费者提供中国制造的商品。Wish:以移动端为主的跨境电商平台,主打低价商品和个性化推荐。这些平台上的商品数据包括商品名称、价格、销量、用户评价、库存等信息,对于市场分析具有重要价值。

2201_76125261的博客 1233

dojo菜鸟学习笔记前述

最近做项目用到dojo框架,对于js大盲的我真是奇难无比。留下笔记,供日后复习只用,也给菜鸟指明方向 总的来说dojo跟其他的js框架比较类似,但是某些地方令人叹服。只有用了才知道,如果学过jquery,easyUi 什么的,上手会比较快点。 dojo的官方网站是http://dojotoolkit.org,我现在用的版本是1.8,网上搜到的csdn,博客园大部分都是n年

biany2的专栏 1049

手把手教你学Simulink——机器人力控场景实例:基于Simulink的永磁同步电机重力补偿力矩控制仿真

本文介绍了基于Simulink的机器人重力补偿力矩控制仿真方法。针对机器人悬停时电机发热、抖动等问题,提出通过前馈补偿重力转矩的解决方案。文章详细阐述了从机器人动力学建模、重力补偿计算、PMSM转矩控制到系统集成的完整实现流程,并以2-DOF机械臂为例验证了补偿效果。结果表明,重力补偿能显著降低电机电流和拖拽力,提高系统柔顺性。文中还提供了高级功能扩展方向,如参数辨识、摩擦补偿等,为实际工程应用提供了参考框架。

MHD0815的博客 154

Java与OSG的梦幻联动:深入编译OpenSceneGraph的Java JNI桥梁,开启3D视觉盛宴的奇幻之旅

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在编译OpenSceneGraph (OSG) 的Java版本时,首先需要了解OSG本身是一个主要用于3D图形和视觉仿真的开源库,它主要支持C++。然而,OSG 也支持通过JNI(Java Native Interface)与Java集成,这允许Java程序调用OSG的C++库。

java专栏 870

dojo store

dojo/store作为dojo数据存储模块,它具有简单,易用,快速存取和管理数据的能力。dojo/store是1.6版本后dojo基于HTML5的 IndexedDB object store API重新实现的模块,与之前版本旧的dojo/data中的存储是不同的。 详细的API这里就不讲述了,这些内容大家可以参考下面的网址 http://dojotoolkit.org/refere

NianLiuNian的博客 441

Cadence PSpice 仿真6:反向放大器傅里叶仿真(FFT,谐波分析)实战图文教程

总谐波失真(THD)指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成分。比如理想运放输出为5V 1Khz的正玄波时,实际输出的信号按照傅里叶展开后不但含有5V 1KHZ的分量,还有1V 2KHZ的分量,那么多出来的1V的分量就是二次谐波,二次谐波失真系数就是20%,由于任意1个波形按照傅里叶展开是可以展开到n次的,所以除了二次谐波外,输出的信号还有3,4,5……n次谐波,随着n的变大谐波的分量会变小,总谐波失真系数就是所有谐波分量和1次谐波(基波)的比值。Cadence

fydar的博客 4956

dojo学习教程

Dojo 作为最著名的 Ajax 开源项目之一,不仅让 Web 程序员可以免费获得和使用其框架进行 Web 应用的开发,更吸引了大量的开发者对其不断的扩充,开发新的组件。DojoX 就是在这样的开发社区中产生的。DojoX 是一组基于 dojo 的开源项目的集合,这些开源项目具有很好的创意和很高的实用性。这些 DojoX 项目有可能成长为一个稳定的版本保留在 DojoX 中,也有些可能会迁移到 D...

weixin_30662539的博客 331

PyTorch深度学习实战(7)——批大小对神经网络训练的影响

在神经网络中,批( batch )是指一次输入网络进行训练或推断的一组样本。批处理( batch processing )是指将这一组样本同时输入网络进行计算的操作。本节中首先介绍批( Batch )的基本概念,并且介绍批大小在神经网络训练过程中的影响。

盼小辉丶的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【转载】Dojo Grid(三)

转自:http://blog.csdn.net/dojotoolkit/article/details/6665759 原作者:Kris Zyp原文链接:http://dojotoolkit.org/documentation/tutorials/1.6/store_driven_grid/译者:zhuxw(zhuxw1984@gmail.com) 鉴于DataGrid对于表格...

weixin_30952103的博客 87

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何使用 Gridx

简介: Gridx 的是为了弥补 Dojo 现有的 Grid 控件(主要是 DataGrid 及其子类 EnhancedGrid)的各种不足而诞生的。Gridx 脱离了 DataGrid 的框架,具有高度模块化的设计,使其能适应各种使用场景的需要。大量针对 DataGrid/EnhancedGrid 的问题而做出的设计上的改进使 Gridx 具有更高的稳定性和更好的性能。同时,API 的设计更直观

Dojo中文博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

DojoX DataGrid

DojoX DataGrid

qingqingzijinxin的专栏 639

dojox.grid.DataGrid 编程篇(1)

dojox.grid.DataGrid 编程篇(1) -- Layout设计 最近使用了dojo组件,其中使用了 dojox.grid.DataGrid 进行一览表示的核心组件,这里总结一些实际使用中遇到的问题和解决方法。 官方Guide: http://dojotoolkit.org/reference-guide/1.8/dojox/grid/DataGrid.html 【准备】 ...

shuangmubuchenglin的博客 285

Gridx入门

原创英文版链接:https://github.com/evanhw/gridx/wiki/Introduction-to-Gridx虽然同样都是基于Dojo store, 但与DataGrid/EnhancedGrid相比,Gridx有一套完全不同的架构。它有以下特点:Gridx采用了一套与UI无关的内核来处理所有的表格数据的逻辑操作。Gridx采用了一套灵活的模块化系统,它与基于plugin的E

Dojo中文博客 1万+
上一篇: HTML5本地存储(Local Storage) 的前世今生(二)
下一篇: Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
dojotoolkit
博客等级 码龄16年 1205粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值