日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LigerUi之Grid使用详解(二)——数据编辑

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LigerUi之Grid使用详解(二)——数据编辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、問題概述

  在開發web信息管理系統時,使用Web前端框架可以幫助我們快速搭建一組風格統一的界面效果,而且能夠解決大多數瀏覽器兼容問題,提升開發效率。所以上一篇文章為大家介紹了LigerGrid的顯示數據的基本用法(傳送門:http://www.cnblogs.com/jerehedu/p/4218560.html ),本次為大家繼續介紹Grid的其他用法,比如使用LigerGrid如何進行數據編輯與保存。

  我們在做應用時可能會遇到這樣的需求,要求在同一個頁面可以同時編輯主從表數據并傳遞到后臺保存,如下圖所示頁面:

  那如何使用LigerGrid如何進行數據編輯與保存呢?一起來看一下吧!

二、LigerGrid進行數據編輯與保存

?  表格的列對象中提供了一個editor編輯器屬性,通過這個editor屬性,我們可以編輯表格行中的每一個單元格。單元格編輯器editor含有多個屬性,其中type屬性可以指定單元格編輯數據的格式,目前提供的type屬性值有string、select、date、spinner等等,除type屬性外,還提供其他屬性可以配合type使用。具體就不在這里一一列舉,有興趣可自行查看api文檔。Editor具體用法可參照如下代碼:在設置表格列屬性是為要編輯的單元格添加editor屬性

{display:"配件名稱",name:"pName",isAllowHide:false,align:"left",width:140,editor:{type:"string"}},{display:"配件品牌",name:"pBrand",isAllowHide:false,align:"left",width:120,editor:{type:"select",data:[{id:"1",text:"品牌一"},{id:"2",text:"品牌二"}],valueField:"id",textField:"text"} }

  雙擊單元格,可顯示如下效果:

?

  以上是使用editor完成單元格數據的編輯,最終我們需要將表格中所有的數據編輯后提交后臺進行處理,使用如下代碼可獲取表格數據

var grid = $(“maingrid”).ligerGrid({……}); var data = grid.getData(); var dataStr=JSON2. stringify (data);

  取到的數據是json對象,使用JSON組件將json對象轉換為json格式的字符串,傳遞到后臺后,我們使用JSON-lib框架將json串在封裝成java實體對象。然而在解析數據的時候后臺頻繁發生異常net.sf.json.JSONException: JSONObject["pBrand"] not found.異常得原因很明顯,json串中不含有某些屬性值,也就是說前臺傳遞過來的表格中的數據并不完全

  經過測試發現,當我們在前臺通過使用ligerGrid提供的方法addRow或者addEditRow新增一行后,如果沒有對行中某個單元格進行編輯,我們在獲取的json數據中不含有此單元格的屬性及值。

  在此我們可以通過兩種方式解決這個問題:

  1、在后臺解析JSON-lib解析json串時,提前數據前通過JSONObject對象的containsKey方法先判斷是否含有要提取的數據,在此就不多加贅述。

  2、 修改前臺,在表格新增行時,為每一行添加默認數據。代碼如下:

function addParts(){var rowData={pName:"",pBrand:"1",pModel:"",nums:"0",price:"",numsPrice:"",remarks:""};g.addEditRow(rowData); }

? ? ? ? ?ligerGrid除了提供editor編輯器之外還提供了totalSummary屬性,可輔助我們對表格中某列進行統計,如統計某列數據的總和、行數、最大值、最小值、平均值等等,我們可以通過type屬性進行指定,代碼及效果如下:

{display:"數量",name:"nums",type:"int",isAllowHide:false,align:"left",width:80,editor:{type:"spinner"},totalSummary:{type:'sum,count,max,min,avg'} }

  以上數量列中的展示效果是totalSummary默認的效果,并不是我們想要的,我們可以為totalSummary屬性提供render函數進行渲染來實現我們的效果,可參考如下代碼:

{display:"數量",name:"nums",type:"int",isAllowHide:false,align:"left",width:80,editor:{type:"spinner"},totalSummary:{//type:'sum,count,max,min,avg'render:function(suminf,column){return "<span style='color:red'>數量:"+suminf.sum+"</span>";}} }

  那么如何計算表格中的金額及金額總計呢?每行的金額比較容易求出,只需要在金額列中的render函數中計算即可,如:

{display:"金額",name:"numsPrice",type:"float",isAllowHide:false,align:"left",width:90,render:function(item){var money = item.nums*item.price;return formatCurrency(money);},totalSummary:{render:function(suminf,column){return "<span id='totalPrice'>"+formatCurrency(suminf.sum)+"</span>";},algin:"left"} }

  從效果圖可以看出金額列是能夠得出結果的,但是總金額卻不能正確計算,這是因為totalSummary的值是在新增行、刪除行或者編輯所在列數據之后才進行計算。那么如何得出總金額呢?我們可以借助ligerGrid提供的與編輯相關的事件如onBeforeEdit、onAfterEdit、onAfterShowData等,如下:

var totalNums=0,totalPrice=0; //觸發編輯事件前給總價賦值 function f_onBeforeEdit(e){totalNums-=parseInt((e.record.nums));totalPrice- =parseFloat(formatCurrency(parseFloat(formatCurrency(e.record.price)) * parseInt(e.record.nums))); } function f_onAfterEdit(e){g.updateCell('numsPrice', e.record.price * e.record.nums, e.record);totalNums+=parseInt(e.record.nums);
  totalPrice+=parseFloat(formatCurrency(parseFloat(formatCurrency(e.record.price)) * parseInt(e.record.nums))); $("#totalPrice").html(formatCurrency(totalPrice)); }

  以上便是ligerGrid表格編輯數據和匯總數據的一些用法。小伙伴們看懂了嗎?沒看懂的可以點擊源碼下載查看源碼哦!

?

作者:杰瑞教育
出處:http://www.cnblogs.com/jerehedu/?
本文版權歸煙臺杰瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

總結

以上是生活随笔為你收集整理的LigerUi之Grid使用详解(二)——数据编辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。