提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:龚雪|2023-03-13 11:09:25.160|阅读 77 次
概述:本文将展示如何使用 SpreadJS 纯前端表格控件,在30分钟内、三步操作创建产品目录页和购物车效果,欢迎下载最新版体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
SpreadJS结合40余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,基于 HTML5,兼容 450 多种 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,备受华为、明源云、远光软件等知名企业青睐,被中国软件行业协会认定为“中国优秀软件产品”。SpreadJS在界面和功能上与 Excel 高度类似,但又不局限于 Excel,而是为企业信息化系统提供 表格文档协同编辑、 数据填报 和 类 Excel 报表设计 的应用场景支持,极大降低了企业研发成本和项目交付风险。
在我们的项目当中,经常需要添加一些选择界面,让用户直观地进行交互,比如耗材、办公用品、设计稿或者其它可以选择的内容。
在线商城的商品目录和购物车无疑是一种大家都很熟悉的交互方式,但是在实际开发中,我们可能会遇到以下几个问题:
这里给大家提供一个思路,用在线Excel来实现这个功能!本文将展示如何使用 SpreadJS 纯前端表格控件,在30分钟内、三步操作创建产品目录页和购物车效果。SpreadJS是葡萄城结合 40 余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,它是一个基于 HTML5的 JavaScript 电子表格组件,可为我们的用户提供熟悉的类似 Excel 的电子表格体验。
先来看看完成的效果:
简单三步创建个性化产品目录页
除了支持数百种统计和财务功能的高速计算引擎外,我们还将大量使用SpreadJS内置的 RANGEBLOCKSPARKLINE(template_range, data_expr) - 一个强大的迷你图功能,允许用户将单元格范围模板 (template_range) 定义为单个单元格类型并将该模板应用于单元格以将一组数据(data_expr)加载到模板中。
以下是创建和设计产品目录所需的内容:
数据源表包含有关不同产品的数据。它们位于名为 tbProducts 的表中。
此表包含有关名称、类别、价格、评级等的信息:
此页面包含用于在目录表上创建产品列表的模板范围。
首先要做的是排列单元格,然后设置单元格的绑定路径。
它可以通过 Javascript 使用 SpreadJS 的 setBindingPath 方法来完成。
templateSheet.setBindingPath(0, 0, "Nr"); templateSheet.setBindingPath(0, 1, "Name"); templateSheet.setBindingPath(0, 3, "Price"); templateSheet.setBindingPath(0, 4, "Category"); templateSheet.setBindingPath(0, 5, "Description"); templateSheet.setBindingPath(0, 6, "Image"); templateSheet.setBindingPath(0, 7, "Review"); templateSheet.setBindingPath(0, 8, "Favorite"); templateSheet.setBindingPath(0, 9, "Rating");
当然,上边这步操作也有不用写代码的方法——用SpreadJS设计器,下载SpreadJS安装包,在下载的安装包中,从“\SpreadJS.Release.x.x.x\Designer\Designer Runtime”路径下找到设计器的安装包,完成安装后,按照下列步骤操作:
如上面的屏幕截图所示,此表包含四个主要部分:
此面板包含一个按钮列表,可以更改包含有关产品的数据的表格的顺序,从目录表更改产品的顺序。
如果使用SpreadJS设计器,执行以下操作:
另外,还可以使用以下 JavaScript 代码添加按钮列表:
var cellType = new GC.Spread.Sheets.CellTypes.ButtonList(); cellType.items([{text:"Name (asc)",value:0},{text:"Name (desc)",value:1},{text:"Price (lowest)",value:2},text:"Price (highest)",value:3},{text:"Rating (lowest)",value:4}, {text:"Rating (highest)",value:5}]); cellType.selectedBackColor("#0AA371"); cellType.selectedForeColor("#FFFFFF"); cellType.selectionMode(GC.Spread.Sheets.CellTypes.SelectionMode.single);// allows only 1 item to be selected catalogSheet.getCell(3, 2).cellType(cellType);
通过使用 ValueChanged 事件,我们可以根据按钮列表选择更改位于 Datasource 工作表上的表的顺序。
//Sort by panel catalogSheet.bind(GC.Spread.Sheets.Events.ValueChanged,function(type,args){ if (args.row ==3 && args.col==2)//only check if the button list value has changed { var i = 1; var asc = true; switch(args.newValue){ case 1: i= 1; asc = false;//sort by Name desc break; case 2: i= 3; asc = true;//sort by Price asc break; case 3: i= 3; asc = false;//sort by price desc break; case 4: i= 8; asc = true;//sort by Rating asc break; case 5: i= 8; asc = false;//sort by Rating desc break; default: i = 1; asc = true; //sort by Name desc break; } spread.suspendPaint(); //change the sorting spread.getSheetFromName("DataSource").sortRange(1, 0, 15, 9, true, [ {index:i, ascending:asc} ]); spread.resumePaint(); } });
产品列表是产品目录中最重要的部分。这包含产品列表及其有关价格、类别、名称和图像的各自信息。
如前所述,我们将使用 RANGEBLOCKSPARKLINE 创建产品列表。
更改单元格宽度 (B6:D10) 以适应上述模板 (Template!A2:E7) 后,在这些单元格上设置如下公式:
=RANGEBLOCKSPARKLINE(Template!A2:E7,OBJECT(tbProducts[#Headers],INDEX(tbProducts[#Data],index,SEQUENCE(COUNTA(tbProducts[#Headers]),1))))
在这种情况下,索引将是项目的编号。例如,在 B6 上,索引将为 1。
如果这里只使用 javascript实现,可以用以下代码:
//first product sheet.setFormula(5, 1, "=RANGEBLOCKSPARKLINE(Template!A2:E7,OBJECT(tbProducts[#Headers],INDEX(tbProducts[#Data],1,SEQUENCE(COUNTA(tbProducts[#Headers]),1))))");
对其他单元格重复相同的策略。
当用户使用SelectionChanged事件点击另一个item时,出现在目录右侧的item发生变化,选中item右端的“加号”背景;它变成绿色。
执行此操作的 JavaScript 代码如下:
// select items var row = 5, col =1; catalogSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (sender, args) { const sheet = args.sheet; const newRow = args.newSelections[0].row; const newCol = args.newSelections[0].col; if ((newRow <5 || newRow > 9) || (newCol < 1 || newCol > 3)) return; //change the item appearing on the right panel var position = 3*(newRow - 5) + newCol; sheet.suspendPaint(); sheet.setFormula(5, 5, "=RANGEBLOCKSPARKLINE(Template!H9:O21,OBJECT(tbProducts[#Headers],INDEX(tbProducts[#Data]," + position + ",SEQUENCE(COUNTA(tbProducts[#Headers]),1))))"); // change the color of the "plus" sign of the selected item sheet.getCell(row, col).backColor("#dddddd"); sheet.getCell(newRow, newCol).backColor("#53b175"); sheet.resumePaint(); row = newRow; col = newCol;
添加到购物车按钮是一个简单的按钮,显示可以使用超链接功能调用最终将商品添加到购物车的事件或调用其他一些电子商务支付功能。该按钮显示该项目已添加到购物车的警报。
本文内容源自
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
面向企业级应用开发、基于HTML5的纯JavaScript电子表格控件。
SpreadJS在线表格编辑器SpreadJS在线表格编辑器是类似在线Excel功能和外观的表格编辑程序,是SpreadJS桌面设计器的在线版本,并且提供了源代码,用户可以任意扩展自定制。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢