• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
    當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

    ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:35:57
    文檔

    ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼

    ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼:對(duì)于大量數(shù)據(jù)的查詢和展示使用分頁是一種不錯(cuò)的選擇,這篇文章簡要介紹下自己實(shí)現(xiàn)分頁查詢的思路。 分頁需要三個(gè)變量:數(shù)據(jù)總量、每頁顯示的數(shù)據(jù)條數(shù)、當(dāng)前頁碼。 //數(shù)據(jù)總量 int dataCount; //每頁顯示的數(shù)據(jù)條數(shù) int pageDataCount; int p
    推薦度:
    導(dǎo)讀ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼:對(duì)于大量數(shù)據(jù)的查詢和展示使用分頁是一種不錯(cuò)的選擇,這篇文章簡要介紹下自己實(shí)現(xiàn)分頁查詢的思路。 分頁需要三個(gè)變量:數(shù)據(jù)總量、每頁顯示的數(shù)據(jù)條數(shù)、當(dāng)前頁碼。 //數(shù)據(jù)總量 int dataCount; //每頁顯示的數(shù)據(jù)條數(shù) int pageDataCount; int p

    對(duì)于大量數(shù)據(jù)的查詢和展示使用分頁是一種不錯(cuò)的選擇,這篇文章簡要介紹下自己實(shí)現(xiàn)分頁查詢的思路。

    分頁需要三個(gè)變量:數(shù)據(jù)總量、每頁顯示的數(shù)據(jù)條數(shù)、當(dāng)前頁碼。

    //數(shù)據(jù)總量
    int dataCount;
    //每頁顯示的數(shù)據(jù)條數(shù)
    int pageDataCount;
    int pageNumber;

    根據(jù)數(shù)據(jù)總量和每頁顯示的數(shù)據(jù)條數(shù)計(jì)算出總頁數(shù),根據(jù)當(dāng)前頁碼和每頁顯示的數(shù)據(jù)條數(shù)計(jì)算出從數(shù)據(jù)庫中讀取數(shù)據(jù)的起始行號(hào)和結(jié)束行號(hào)。

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

    對(duì)于數(shù)據(jù)庫的查詢操作使用輕量級(jí)ORM框架Dapper來實(shí)現(xiàn),具體代碼如下:

    protected IDbConnection CreateConnection()
    {
     IDbConnection dbConnection = new SqlConnection(ConnectionString);
     dbConnection.Open();
     return dbConnection;
    }
    
    //獲取數(shù)據(jù)庫中數(shù)據(jù)的總條數(shù)
    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("起始行號(hào)必須大于0");
     }
     if (endline - startline < 0)
     {
     throw new ArgumentOutOfRangeException("結(jié)束行號(hào)不得小于起始行號(hào)");
     }
     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文件封裝繪制按鈕的代碼,這里需要注意一點(diǎn),使用VS發(fā)布站點(diǎn)時(shí)App_Code文件夾中的文件不會(huì)被打包,需要手動(dòng)拷貝App_Code文件夾中的文件到站點(diǎn)中。

    @*
     amount:數(shù)據(jù)總數(shù),count:每頁顯示的數(shù)據(jù)條數(shù),redierctUrl點(diǎn)擊按鈕時(shí)的跳轉(zhuǎn)鏈接
     頁面上需引用: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;
     //頁面上顯示的按鈕數(shù)目(不計(jì)首頁、末頁、上一頁、下一頁等按鈕),若頁面總數(shù)超過該值則繪制按鈕分隔符
     const int BUTTON_COUNT = 7;
     // 按鈕分隔符
     const string BUTTON_SEPARATOR = "......";
     //按鈕分隔符左側(cè)按鈕數(shù)目(不計(jì)首頁、末頁、上一頁、下一頁等按鈕)
     const int LEFT_BUTTON_COUNT = 4;
     //按鈕分隔符右側(cè)按鈕數(shù)目(不計(jì)首頁、末頁、上一頁、下一頁等按鈕)
     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>
     }
     }
     //繪制按鈕分隔符右側(cè)按鈕
     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 () {
     //設(shè)置被選中按鈕的背景色
     var selected = $('#@selectedIndex');
     if (selected != undefined) {
     selected.css('background-color', '#E1E1E1');
     }
     </script>
    }
    
    

    在前臺(tái)頁面中調(diào)用即可繪制分頁按鈕

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

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



    對(duì)應(yīng)的HTML代碼:


    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼

    ASP.NET MVC5 實(shí)現(xiàn)分頁查詢的示例代碼:對(duì)于大量數(shù)據(jù)的查詢和展示使用分頁是一種不錯(cuò)的選擇,這篇文章簡要介紹下自己實(shí)現(xiàn)分頁查詢的思路。 分頁需要三個(gè)變量:數(shù)據(jù)總量、每頁顯示的數(shù)據(jù)條數(shù)、當(dāng)前頁碼。 //數(shù)據(jù)總量 int dataCount; //每頁顯示的數(shù)據(jù)條數(shù) int pageDataCount; int p
    推薦度:
    標(biāo)簽: 實(shí)例 分頁 的例子
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产AV午夜精品一区二区入口 | 国产午夜福利精品久久2021| 无码国模国产在线无码精品国产自在久国产| 日韩精品欧美激情国产一区| 精品亚洲成a人片在线观看| 99久久精品免费看国产| 久久精品国产亚洲av影院| 国产偷国产偷高清精品| 97久久久精品综合88久久| 精品国产一区二区三区在线观看| 久久精品亚洲一区二区三区浴池| 亚洲综合一区二区国产精品| 无码人妻精品一区二区三区66 | 久久精品国产精品亚洲人人 | 久久精品九九亚洲精品天堂| 人妻精品久久无码区| 偷拍精品视频一区二区三区| 国产成人无码精品久久久久免费| 精品视频在线免费观看| 国产成人精品手机在线观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲午夜成人精品电影在线观看| 日韩人妻精品无码一区二区三区 | 久久久精品国产sm调教网站| 亚洲热线99精品视频| 中国大陆精品视频XXXX| 黑巨人与欧美精品一区| 99国产精品国产免费观看| 国产亚洲一区二区精品| 国产精品久久久久久| 99精品免费视品| 免费欧美精品a在线| 欧美精品一区二区三区在线| 亚洲国产精品久久久久网站 | 日韩精品人妻av一区二区三区| 久久成人精品| 欧美精品区一级片免费播放| 国产午夜精品一区二区| 日本免费精品一区二区三区| 四虎亚洲国产成人久久精品| 亚洲精品亚洲人成人网|