簡單說下 Winform 的分頁快速開發框架必須要實現的幾個功能之一


簡單說下 Winform 的分頁快速開發框架必須要實現的幾個功能之一

分頁非為前端分頁  和 后端分頁,前端分頁只有適用於B/S,B/S的呈現速度遠遠不如C/S,而C/S則沒有這個問題,所以分頁必然是后端分頁

這里先要說明WinForm分頁和Web分頁都會存在一個問題:查兩次(一次取得頁面總數,一次取得當前頁數據)

所以分頁是需要數據特別大的時候才具有優化的意義,比如查詢100條數據是1ms 查詢1000條數據是1.1s如果使用分頁,那么查詢的耗時基本上就是2ms(算上嵌套查詢的話是3ms),so自行掂量

控件網上有很多不多說了

說下sql(EF的略過)

-------這就是多出的一次查詢,為了取得總的頁數
DECLARE
@Total INT SELECT @Total = COUNT(0) FROM Sys_Button A WHERE 1 = 1 AND A.IsDelete = 0 AND ISNULL(A.Button_Name,'') LIKE '%'+ ISNULL(@cButton_Name,ISNULL(A.Button_Name,'')) +'%' AND ISNULL(A.Button_Nick,'') LIKE '%'+ ISNULL(@cButton_Nick,ISNULL(A.Button_Nick,'')) +'%' AND ISNULL(A.Button_Hint,'') LIKE '%'+ ISNULL(@cButton_Hint,ISNULL(A.Button_Hint,'')) +'%' AND ISNULL(A.Button_Sub,'') LIKE '%'+ ISNULL(@cButton_Sub,ISNULL(A.Button_Sub,'')) +'%' SELECT B.* FROM( SELECT A.Button_Id ,A.Button_Name ,
----這里就是重點實現分頁的代碼了
@Total PageRecord ,ROW_NUMBER() OVER (ORDER BY Page_Nick,A.Button_Sort ) Record_Id, (@Total / @PageSize) + 1 PageCount FROM Sys_Button A LEFT JOIN Sys_Page B ON A.Button_Page = B.Page_Id WHERE 1 = 1 AND A.IsDelete = 0 AND ISNULL(A.Button_Name,'') LIKE '%'+ ISNULL(@cButton_Name,ISNULL(A.Button_Name,'')) +'%' AND ISNULL(A.Button_Nick,'') LIKE '%'+ ISNULL(@cButton_Nick,ISNULL(A.Button_Nick,'')) +'%' AND ISNULL(A.Button_Hint,'') LIKE '%'+ ISNULL(@cButton_Hint,ISNULL(A.Button_Hint,'')) +'%' AND ISNULL(A.Button_Sub,'') LIKE '%'+ ISNULL(@cButton_Sub,ISNULL(A.Button_Sub,'')) +'%' ) B WHERE B.Record_Id > (@PageIndex - 1) * @PageSize AND B.Record_Id <= (@PageIndex) * @PageSize ORDER BY Page_Nick, Button_Sort

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM