摘要:表格的刷新保留查詢條件的刷新當前分頁的數據更新,請使用也可以使用獲取當前接口請求的參數。
本期我們要講述一下最常見的布局————表格:
如何引入datagrid組件(在文章的末尾)
來個demo,調用的代碼
let options = { container:".con",//表格的容器 paging:{//分頁的相關配置,其他參數配置參考[諾諾組件之分頁(舊版)][1] url:"accinfo/receipt/query.do" }, columns:[{//表頭配置,由于columns的配置比較復雜,多帶帶拎出來在下方說明 title:"收款單編號", field:"number", nowrap:true, className:"f-tali", align:"left", width:90 },{ title:"客戶名稱", field:"accountName", showtitle:true, width:80, nowrap:true, align:"left", className:"f-tali", order:{field:"sort", desc:"2",asc:"1"}, content: ` <%if $value.source?? && $value.source == "1"%> 眾 <%$value.accountName%> <%else%> <%$value.accountName%> <%/if%> ` , filter:null } ... ], fields:["c_receiptid","accountName"], }; datagrid(options)
名詞簡稱:
self:datagrid的實例對象也就是datagrid(opt)的返回值
$dom:dom的jquery對象
下面展示下接口返回的格式:
{ "result":"success", "periods":["2017-01","2017-02","2017-03","2017-04","2017-05","2017-06","2017-07","2017-08","2017-09","2017-10","2017-11","2017-12"],"page":1, "list":[ {"monthstatus":[4,4,4,4,4,4,4,4,4,4,4,4],"accountName":"導賬測試","is_transfer":null,"source":0,"status":0,"accID":"07A508889E594CA0A69A7F1C748D570B"}, {"monthstatus":[4,4,4,4,4,4,4,4,1,1,3,1],"accountName":"張慧502","is_transfer":null,"source":0,"status":0,"accID":"F02D7151DEDA4A51803DD7FBFAD5F7E6"}, {"monthstatus":[4,4,4,4,4,4,4,4,4,4,4,4],"accountName":"進項Q","is_transfer":null,"source":0,"status":0,"accID":"0ED1859B007F462CB9B250F87229D6B3"}, {"monthstatus":[1,1,1,1,1,1,1,1,1,1,1,1],"accountName":"成品油測試","is_transfer":null,"source":0,"status":0,"accID":"35CD8ED07E5943489B2D2ABA12C74385"}, {"monthstatus":[4,4,4,4,4,4,4,4,4,4,4,4],"accountName":"50999","is_transfer":null,"source":0,"status":0,"accID":"306D4C0974ED47DBBDD66A9FF2B12A37"} ], "aCount":21 }datagrid配置參數 width
功能:設置表格的寬
height功能:設置表格的高
paging類型:Object
功能:配置接口請求
大部分的參數參照http://zjaisino.github.io/plu...
下面是參數的補充說明
字段名稱 | 參數類型 | 參數值 | 參數意義 |
---|---|---|---|
getData | Function | data | data表示的就是接口的返回值,比如接口的結果是{data:{list:[],aCount:0}} ,這時候需要將數據處理下返回給表格組件:getData:function(data){ return data.data;} |
類型: Boolean
功能:默認為true。當設置為true的時候paging設置有效,表格采用接口請求加載;設置為false的時候,表格不會調用接口請求,這個時候要配置datagrid的data參數
類型:Array
功能:表格的數據,為空的時候請傳值為空數組;
類型:String
功能:paging傳入值里作為datagrid數據的鍵值,默認是list
字段名稱 | 參數類型 | 參數值 | 參數意義 |
---|---|---|---|
title | String | 收款單編號 | 表頭列的展示內容 |
field | String | accountName | 在這個td里面展示的是鍵為accountName的值 |
children | Array | columns對象 | 表頭里面的合并列需要 |
fixed | String | left right |
列固定在左邊或者固定在右邊 |
className | String | 給td增加樣式 | |
content | string | number checkbox input `<%if $value.source?? && $value.source == "1"%>眾<%$value.accountName%><%else%><%$value.accountName%><%/if%> ` |
number :序列號 checkbox 是復選框 input輸入框 字符串其中的$value表示的就是當前這一行數據,并且template設置為true,filter為null |
checked | Boolean | true | 復選框勾選 |
filter | Function |
例子 filter:function(val,name,data){ return " "+data.number+""; } null |
作為函數的時候返回的就是td的展示內容 作為null的時候采用content配置字符串的方式 當content為checkbox的時候filter返回可以是個對象,用來表示復選框的disabled的屬性 |
nowrap | Boolean | true false |
true 溢出隱藏并且末尾以省略號的格式展示 默認是false |
showtitle | Function Boolean |
Function true false |
title為函數的的返回值 默認是true,鼠標放上去展示title 設置為false,則不展示title, |
order | {} | {field:"sort", desc:"2",asc:"1"} | 當排序的時候額外傳給后臺一個鍵值對,其中field傳的是鍵 當點擊向下的箭頭傳的是desc對應的參數,點擊向上的箭頭傳的是asc對應的參數 |
width | 和table默認的參數格式一樣 | "10%" | |
colspan | 和table默認的參數格式一樣 | ||
rowspan | 和table默認的參數格式一樣 |
來個demo:
option當你很多column寫的要吐血的時候這個參數就派上的用場,里面的參數作為column的基礎配置
比如:option:{
align:"left"
},表示所有的column的align都是left
類型:Array
類型:String
類型:Boolean (設置為true)
功能:在tr上添加數據,用jquery的data()進行取值;當配置為true時,表示當前一行的數據都綁定到tr上;
onRowRender(self, val, i){//在渲染每一行的時候執行 /* *self 是datagrid的實例對象 *val為這行數據 *i標識這是第幾行(從0開始) *返回來的對象是綁定在tr標簽上的屬性以及屬性值鍵值對,className是追加在tr class屬性上; */ return { className:"", flag:1 } },onRender
onRender(self){//表格渲染完成之后執行的函數
},
onCheckboxChange(self, e, elem){//勾選復選框之后的回調函數
}
功能:表格的腳注
類型:String
datagrid內嵌了events模塊,可以在表格上綁定事件,我們以刪除按鈕的功能為例
events:{//原理是在table表格上做代理事件,對于不能代理的事件(input propertychange)不能在此使用,希望后期能完善這個 "click .j-delete":"del" }, del:function(e,elem){//e事件,elem 觸發事件的dom的jquery對象 layer({//使用前請先引用layer、request、router、hintmsg模塊 content:"確定刪除?", button:[{ id:"confirm", callback:function (self) { request.get(elem.data().url, elem.data(), {// 在dom元素上綁定刪除的url,以及接口要傳的參數 "200":(res)=> { hintmsg("刪除成功!",1); let activeRouter = router.active(true);//獲取當前路由 activeRouter.grid.paging.query(true);//刷新列表 self.hide();//關閉彈出層 }, other:(res)=>{ hintmsg(res.message,0); let activeRouter = router.active(true); activeRouter.grid.paging.query(true); self.hide(); } }) } },{ text:"取 消" }] }) }
還有很多參數就不一一描述,下面列出全部的參數以及默認值,至于沒有描述到的參數功能可以參考源碼
全部的參數以及默認值container:null, data:null, columns:null, isFixed:true, isLine:false, isActive:true, isBorder:true, option:null, isPaging:true, isDir:false, keyCode:[9, 13], url:null, paging:null, fields:null, dataField:"list", width:"100%", height:"100%", footer:"", placeholder:"", onFocusin:null, onFocusout:null, onFocus:null, onBlur:null, filterQuery:null, stringify:null, rowRender:null, colRender:null, onActive:null, onCancelActive:null, onRowRender:null, onRowClick:null, onRowDblclick:null, onCheckboxChange:null, onRender:null, onRenderBefore:null, onScroll:null
在初始化完成組件之后將返回實例對象,這個實例對象對于后續的條件搜索、修改一行數據可以提供一些便捷的方法
實例對象的方法方法名稱 | 參數 | 參數意義 | 功能 |
---|---|---|---|
update | index, data | 行的索引,需要更新的數據采用鍵值對的形式{修改的列的filed名稱:值} | 更新單行 |
checkedData | field | 數據的字段名稱 | 返回勾選行tr上field的list,如果參數為空表示的是獲取tr全部數據 |
scrollTo | x, y | 橫向坐標,縱向坐標 | 回滾表格到指定位置 |
resize | 重新按照參數調整表格布局 |
對象名稱 | 類型 | 功能 |
---|---|---|
data | Object | 接口返回來的數據 |
element | $dom | 表格的jquery對象 |
list | Array | 表格的數據列表 |
paging | Object | 分頁的實例對象 |
router | Object | 表格所在的路由實例對象 |
數據增、刪、改、查、展示是表格的核心,接口返回的數據作為self的data,我們要將這些數據按照一定的規則展示在頁面,并且存儲在dom上(有利于后續的刪除以及修改操作),還能在表格的第一列增加復選框的功能,完成表格數據的批量操作,在完成操作時候及時更新表格上的數據。那么在數據的流轉中,我們和后臺約定好,后續處理數據時,字段傳的參數名字要和接口請求回來的字段名稱一樣,可以省去繁瑣的字段轉換過程。
將表格的相似功作為基礎設置,最常見的是表格的刪除,當我們以數據為核心的時候,我們關注的是刪除的鏈接,以及這行的數據,將鏈接綁定在dom元素上,或者配置在表格中,在函數中獲取配置,這樣刪除就可以作為項目表格公用的方法。
表格的刷新:self.paging.query();保留查詢條件的刷新:self.paging.query(true);當前分頁的數據更新,請使用self.update(),也可以使用self.paging.query("reload"),獲取當前接口請求的參數 self.paging.condition。
如何引入datagrid組件如果你安裝的是npm包nuonuo-libs:
首先配置在webpack.config.js中增加配置
{ test:/.js$/, use:[{ loader:"nui-loader", options:{ paths:{ pub:"src/public" }, alias:{ nuijs:"nuonuo-libs/script/nui/index", util:"{pub}/util", store:"{pub}/store", data:"{pub}/data", frame:"{pub}/frame", layer:"{pub}/layer", router:"{pub}/component/platformRouter", JSON:"nuonuo-libs/script/polyfill/json" } } }] }
在模塊中引入
import {datagrid} from "nuijs"
如果你使用的是libs公用文件
那么使用
import datagrid from "/libs/script/nui/components/datagrid";
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/95227.html
摘要:滾動條示例正常情況下滑塊的樣式鼠標懸浮在該類指向的控件上時滑塊的樣式鼠標懸浮在滑塊上時滑塊的樣式正常時候的主干部分鼠標懸浮在滾動條上的主干部分這里有好多上面這結構為了節省篇幅就省去了 ?????? ???????????? ????????????滾動條示例 ???????????? ??????????????????.nui-scroll { ?????????????????????...
摘要:官方的解決方案展示了客戶端分頁解決方案的基本思想,但是這個示例太過簡單。原來是向設置了需要顯示的所有數據行,不管分頁比如可以一次顯示出來條數據而現在,如果設置的數據量過大,則需要通過客戶端分頁來逐頁顯示。 官方的解決方案 官方在在線示例中給了一個簡單的 client pagination 解決方案,代碼就不貼了,這里說說它的基本思想和處理過程。 首先,是綁定一個 preload 事件,...
摘要:在前一篇,的客戶端分頁解決方案中留下了一個問題如果前三頁只需要加載一次數據,采用客戶端分頁,之后的每一頁都仍然從服務器獲取,應該怎么辦現在就來改造,讓它實現這個功能。所以正確的解決辦法是試驗一下就能證明它的正確性。 在前一篇,miniui datagrid 的客戶端分頁解決方案 中留下了一個問題:如果前三頁只需要加載一次數據,采用客戶端分頁,之后的每一頁都仍然從服務器獲取,應該怎么辦?...
摘要:什么是是一種基于和的用戶界面插件集合。為創建現代化,互動,應用程序,提供必要的功能。是個完美支持網頁的完整框架。很簡單但功能強大的。返回則取消該動作。該函數有下列參數要傳遞到遠程服務器的參數對象。當檢索數據成功時調用的回調函數。 什么是easyUI easyui是一種基于jQuery、Angular.、Vue和React的用戶界面插件集合。easyui為創建現代化,互動,JavaScr...
摘要:什么是是一種基于和的用戶界面插件集合。為創建現代化,互動,應用程序,提供必要的功能。是個完美支持網頁的完整框架。很簡單但功能強大的。返回則取消該動作。該函數有下列參數要傳遞到遠程服務器的參數對象。當檢索數據成功時調用的回調函數。 什么是easyUI easyui是一種基于jQuery、Angular.、Vue和React的用戶界面插件集合。easyui為創建現代化,互動,JavaScr...
閱讀 2675·2021-11-25 09:43
閱讀 2587·2021-11-22 09:34
閱讀 2856·2021-11-12 10:34
閱讀 1442·2021-10-20 13:46
閱讀 2307·2019-08-30 13:21
閱讀 935·2019-08-30 11:21
閱讀 488·2019-08-30 11:20
閱讀 2192·2019-08-29 17:20