【熱身話題】
在開發的過程中,大量數據的展示大多采用表格的方式,直觀,清晰。在這里,我也使用過一些框架Bootstrap.table ,Dev table ,layui table。本次采用的layui table。用表格展示數據的同時會提供豐富的查詢條件去篩選相應的數據。由於大量的數據,一般都會使用分頁的形式去查詢數據,框架中帶有這種功能。
【底部分頁欄效果圖】
【上方查詢欄效果圖】
【問題來源】
首次進入頁面或者頁數停留在第一頁使用查詢欄查詢時能夠查詢到數據。當分頁切換到第二頁時,再使用查詢欄查詢,可能查不到數據。(為什么說是可能?后面會給出解釋)
【理想方法】
①在查詢提交參數時,添加一個參數 page:1
layui中通過where提交參數 where:{ search:{'USER_NAME':'汪菜菜'},page:1}
注:此方法雖然看似解決了問題,實際存在巨大的bug。你會發現使用查詢欄后當你選擇任一頁時請求后台的page參數都為1,也就是無論選擇哪一頁得到的結果都是第一頁的數據。
②自己也找過資料,說要把請求參數寫成下方這種形式,測試結果也並未解決問題,和不加的效果相同,不知道時因為后台處理問題還是其他問題。
var Table = {
ID: "tb",
page: { curr: 1 },
Where: {
search: JSON.stringify(jsondata),
}
};
怎么肥四,難道是layui更新了嗎,之前我使用這個解決方式是不行滴,目前此解決方法是可行的。2019-12-17
【在使用layui 的過程中還是發現無法滿足開發需求,后期將使用dev表格框架。】
【問題解析】
表格有自帶的分頁功能,后台分頁主要是通過傳參 {limit:15,page:1} ,表示當前頁數為第一頁,每頁顯示15條數據,兩個參數來控制分頁的分頁查詢。假設當前有三十條數據,則初始化表格時,顯示兩頁,總數30,頁數為1,數據源為1-15條數據。當我們添加查詢條件時,假設我通過模糊查詢 “汪” 能在 30 條數據中查詢到 10 條數據 ,當前頁數為第一頁,查詢的數據進行分頁{limit:15,page:1},10條數據取1-15條之內的,數據源也就是 10 條數據。此時我們把頁數切換到第二頁時,再通過相同的查詢條件去查詢,查詢數據還是為10條,分頁傳的參數還是{limit:15,page:2},10條數據取 16-30 之間的數據,然而總數據只有10條,行號在16-30之間無數據,雖然可以看到數據的總數為 10 ,但是沒有數據源,前台顯示無數據,無數據也就無法初始化下方的分頁欄。為了保證能夠查詢數據,在點擊查詢按鈕時,自動將頁數指定為第一頁,這是返回無數據才是真正的無數據。
【引發思考】
①我們解決的方向?
其實我們發現當我們把頁數切換到第一頁的時候,這樣查詢時有效的。所以我們如何在點擊查詢時,讓底下的分頁欄設置為第一頁為選中,而不是直接修改當前頁參數。
②在問題分析中提到,當分頁切換到第二頁是查詢不到數據,那是因為通過模糊查詢條件查詢的數據只有10條,那么如果查詢的數據有超過分頁的限制 {limit:15} ,即大於15條(前提是第二頁,同理第三頁時需要大於30條),是否能夠正常查詢出所有查詢數據?
答案:是的。(這是在測試過程中得出的結論)
【圖解】
①這是第一頁查詢2得出19條數據
②將查詢條件去掉,點擊到第二頁查詢到數據圖,和直接從上圖結果切換到第二頁的效果是相同的。
🌂我們現在清除查詢條件,在第一頁查詢“2017”只有三條數據
④我們現在清除查詢條件切換到第二頁,同樣查詢“2017”,顯示無數據,並且沒有分頁欄
🌫修改過后,即使切換到第二頁,但是傳參數 {page:1}此時返回數據和圖上🌂相同,是第一頁的數據