<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET MVC5 實現分頁查詢的示例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:35:57
        文檔

        ASP.NET MVC5 實現分頁查詢的示例代碼

        ASP.NET MVC5 實現分頁查詢的示例代碼:對于大量數據的查詢和展示使用分頁是一種不錯的選擇,這篇文章簡要介紹下自己實現分頁查詢的思路。 分頁需要三個變量:數據總量、每頁顯示的數據條數、當前頁碼。 //數據總量 int dataCount; //每頁顯示的數據條數 int pageDataCount; int p
        推薦度:
        導讀ASP.NET MVC5 實現分頁查詢的示例代碼:對于大量數據的查詢和展示使用分頁是一種不錯的選擇,這篇文章簡要介紹下自己實現分頁查詢的思路。 分頁需要三個變量:數據總量、每頁顯示的數據條數、當前頁碼。 //數據總量 int dataCount; //每頁顯示的數據條數 int pageDataCount; int p

        對于大量數據的查詢和展示使用分頁是一種不錯的選擇,這篇文章簡要介紹下自己實現分頁查詢的思路。

        分頁需要三個變量:數據總量、每頁顯示的數據條數、當前頁碼。

        //數據總量
        int dataCount;
        //每頁顯示的數據條數
        int pageDataCount;
        int pageNumber;

        根據數據總量和每頁顯示的數據條數計算出總頁數,根據當前頁碼和每頁顯示的數據條數計算出從數據庫中讀取數據的起始行號和結束行號。

        //總頁數
        int pageCount = (int)Math.Ceiling(dataCount/ (pageDataCount* 1.0));
        int startLine = (pageNumber - 1) * PageDataCount + 1;
        int endLine=startLine + PageDataCount - 1;

        對于數據庫的查詢操作使用輕量級ORM框架Dapper來實現,具體代碼如下:

        protected IDbConnection CreateConnection()
        {
         IDbConnection dbConnection = new SqlConnection(ConnectionString);
         dbConnection.Open();
         return dbConnection;
        }
        
        //獲取數據庫中數據的總條數
        public virtual int QueryDataCount(string tableName)
        {
         using (IDbConnection dbConnection = CreateConnection())
         {
         var queryResult = dbConnection.Query<int>("select count(Id) from " + tableName);
         if (queryResult == null || !queryResult.Any())
         {
         return 0;
         }
         return queryResult.First();
         }
        }
        
        public virtual IEnumerable<T> RangeQuery<T>(string tableName, int startline, int endline)
        {
         if (string.IsNullOrEmpty(tableName))
         {
         throw new ArgumentNullException("表名不得為空或null");
         }
         if (startline <= 0)
         {
         throw new ArgumentOutOfRangeException("起始行號必須大于0");
         }
         if (endline - startline < 0)
         {
         throw new ArgumentOutOfRangeException("結束行號不得小于起始行號");
         }
         using (IDbConnection dbConnection = CreateConnection())
         {
         var queryResult = dbConnection.Query<T>("select top " + (endline - startline + 1) + " * from " + tableName + " where Id not in (select top " + (startline - 1) + " Id from " + tableName + " order by Id desc) order by Id desc");
         if (queryResult != null && queryResult.Any())
         {
         return queryResult;
         }
         }
         return null;
        }
        
        

        繪制分頁按鈕

        在App_Code文件夾中添加PageHelper.cshtml文件封裝繪制按鈕的代碼,這里需要注意一點,使用VS發布站點時App_Code文件夾中的文件不會被打包,需要手動拷貝App_Code文件夾中的文件到站點中。

        @*
         amount:數據總數,count:每頁顯示的數據條數,redierctUrl點擊按鈕時的跳轉鏈接
         頁面上需引用:bootstrap.min.css
        *@
        @helper CreatePaginateButton(int amount, int count, string redirectUrl)
        {
         <div id="pagenumber" style="position:fixed;bottom:-15px;text-align:center;width:84%">
         <nav style="text-align:center">
         <ul class="pagination">
         <li><a href="@redirectUrl/1" rel="external nofollow" >首頁</a></li>
         @{
         int pageNumber = (int)Math.Ceiling(amount / (count * 1.0));
         pageNumber = pageNumber < 1 ? 1 : pageNumber;
         //頁面上顯示的按鈕數目(不計首頁、末頁、上一頁、下一頁等按鈕),若頁面總數超過該值則繪制按鈕分隔符
         const int BUTTON_COUNT = 7;
         // 按鈕分隔符
         const string BUTTON_SEPARATOR = "......";
         //按鈕分隔符左側按鈕數目(不計首頁、末頁、上一頁、下一頁等按鈕)
         const int LEFT_BUTTON_COUNT = 4;
         //按鈕分隔符右側按鈕數目(不計首頁、末頁、上一頁、下一頁等按鈕)
         const int RIGHT_BUTTON_COUNT = 2;
        
         string[] urlSegments = Request.Url.Segments;
         int selectedIndex = 0;
         int.TryParse(urlSegments[urlSegments.Length - 1], out selectedIndex);
         int previous = (selectedIndex - 1) <= 0 ? 1 : selectedIndex - 1;
         int next = (selectedIndex + 1 > pageNumber) ? pageNumber : selectedIndex + 1;
         var r=Request.Cookies[""];
         if (pageNumber > BUTTON_COUNT)
         {
         <li><a id="next" href="@redirectUrl/@previous" rel="external nofollow" >上一頁</a></li>
         for (int i = 1; i <= BUTTON_COUNT; i++)
         {
         if ( selectedIndex >= LEFT_BUTTON_COUNT && selectedIndex%LEFT_BUTTON_COUNT==0 && i <= LEFT_BUTTON_COUNT)
         {
         <li><a name="pageButton" id="@selectedIndex" href="@redirectUrl/@selectedIndex" rel="external nofollow" >@selectedIndex</a></li>
         int step = selectedIndex;
         int tag = 0;
         for (i = 1; i <= LEFT_BUTTON_COUNT; i++)
         {
         tag = i + step;
         if (tag > pageNumber - RIGHT_BUTTON_COUNT)
         {
         if (i <= LEFT_BUTTON_COUNT)
         {
         i = LEFT_BUTTON_COUNT + 1;
         }
         break;
         }
         <li><a name="pageButton" id="@tag" href="@redirectUrl/@tag" rel="external nofollow" rel="external nofollow" >@tag</a></li>
         }
         }
         else if (i <= LEFT_BUTTON_COUNT && selectedIndex<LEFT_BUTTON_COUNT)
         {
         <li><a name="pageButton" id="@i" href="@redirectUrl/@i" rel="external nofollow" rel="external nofollow" >@i</a></li>
         }
         else if (i < LEFT_BUTTON_COUNT && selectedIndex>LEFT_BUTTON_COUNT)
         {
         int step = selectedIndex / LEFT_BUTTON_COUNT;
         int tag = 0;
         <li><a name="pageButton" id="@(step*LEFT_BUTTON_COUNT)" href="@redirectUrl/@(step*LEFT_BUTTON_COUNT)" rel="external nofollow" >@(step*LEFT_BUTTON_COUNT)</a></li>
         for (i = 1; i <= LEFT_BUTTON_COUNT; i++)
         {
         tag = i + step * LEFT_BUTTON_COUNT;
         if (tag > pageNumber - RIGHT_BUTTON_COUNT)
         {
         if (i <= LEFT_BUTTON_COUNT)
         {
         i = LEFT_BUTTON_COUNT + 1;
         }
         break;
         }
         <li><a name="pageButton" id="@tag" href="@redirectUrl/@tag" rel="external nofollow" rel="external nofollow" >@tag</a></li>
         }
         }
         //繪制按鈕分隔符右側按鈕
         if (i==BUTTON_COUNT-1)
         {
         <li><a name="pageButton" id="@(pageNumber-1)" href="@redirectUrl/@(pageNumber-1)" rel="external nofollow" >@(pageNumber-1)</a></li>
         }
         else if(i==BUTTON_COUNT)
         {
         <li><a name="pageButton" id="@pageNumber" href="@redirectUrl/@pageNumber" rel="external nofollow" rel="external nofollow" >@pageNumber</a></li>
         }
         //繪制按鈕分隔符
         else if (i >= BUTTON_COUNT -RIGHT_BUTTON_COUNT)
         {
         <li><span name="pageButton">@BUTTON_SEPARATOR</span></li>
         }
         }
         <li><a id="next" href="@redirectUrl/@next" rel="external nofollow" >下一頁</a></li>
         }
         else
         {
         for (int i = 1; i <= pageNumber; i++)
         {
         <li><a name="pageButton" id="@i" href="@redirectUrl/@i" rel="external nofollow" rel="external nofollow" >@i</a></li>
         }
         }
         }
         <li><a href="@redirectUrl/@pageNumber" rel="external nofollow" rel="external nofollow" >末頁</a></li>
         </ul>
         </nav>
         </div>
         <script>
         $(function () {
         //設置被選中按鈕的背景色
         var selected = $('#@selectedIndex');
         if (selected != undefined) {
         selected.css('background-color', '#E1E1E1');
         }
         </script>
        }
        
        

        在前臺頁面中調用即可繪制分頁按鈕

        @PageHelper.CreatePaginateButton(246, 10, "/usermanager/attentionlist/")

        下面是幾張分頁按鈕效果圖:



        對應的HTML代碼:


        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET MVC5 實現分頁查詢的示例代碼

        ASP.NET MVC5 實現分頁查詢的示例代碼:對于大量數據的查詢和展示使用分頁是一種不錯的選擇,這篇文章簡要介紹下自己實現分頁查詢的思路。 分頁需要三個變量:數據總量、每頁顯示的數據條數、當前頁碼。 //數據總量 int dataCount; //每頁顯示的數據條數 int pageDataCount; int p
        推薦度:
        標簽: 實例 分頁 的例子
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲av一本岛在线播放| 亚洲AV无码一区东京热| 亚洲视频无码高清在线| 成人免费观看一区二区| 亚洲一区无码中文字幕乱码| 成人免费午夜视频| 国产成人亚洲精品91专区高清| 在线播放免费人成视频在线观看| 日韩亚洲人成在线| 国产又大又粗又硬又长免费| 国产尤物在线视精品在亚洲| 亚洲精品无码久久不卡| 国产日韩AV免费无码一区二区| 日本亚洲欧洲免费天堂午夜看片女人员 | 中国精品一级毛片免费播放| 亚洲三区在线观看无套内射| 久久精品成人免费网站| 久久久婷婷五月亚洲97号色| 免费毛片a在线观看67194| 亚洲乱色伦图片区小说 | 亚洲精品无码激情AV| 在线观看片免费人成视频无码| 老司机亚洲精品影院| 国产精品久久久久久久久久免费 | 精品国产免费一区二区三区| 亚洲色图在线播放| 最近中文字幕mv手机免费高清| 国产亚洲精品欧洲在线观看| 亚洲亚洲人成综合网络| 精品国产污污免费网站aⅴ | 亚洲av日韩av欧v在线天堂| 两个人日本免费完整版在线观看1| 亚洲高清在线播放| 和日本免费不卡在线v| 添bbb免费观看高清视频| 亚洲日韩精品无码一区二区三区| 国产精品久久免费| 特级毛片在线大全免费播放| 亚洲视频在线观看免费| 国产乱色精品成人免费视频| 色欲国产麻豆一精品一AV一免费|