轉帖|使用教程|編輯:龔雪|2023-03-13 11:09:25.160|閱讀 159 次
概述:本文將展示如何使用 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@fc6vip.cn
文章轉載自: