這篇文章給大家介紹如何在ASP.NET MVC5中實(shí)現(xiàn)一個(gè)分頁查詢功能,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),烈山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:烈山等地區(qū)。烈山做網(wǎng)站價(jià)格咨詢:13518219792分頁需要三個(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ù)的起始行號和結(jié)束行號。
//總頁數(shù) int pageCount = (int)Math.Ceiling(dataCount/ (pageDataCount* 1.0)); int startLine = (pageNumber - 1) * PageDataCount + 1; int endLine=startLine + PageDataCount - 1;
對于數(shù)據(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("select count(Id) from " + tableName); if (queryResult == null || !queryResult.Any()) { return 0; } return queryResult.First(); } } public virtual IEnumerable RangeQuery (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("結(jié)束行號不得小于起始行號"); } using (IDbConnection dbConnection = CreateConnection()) { var queryResult = dbConnection.Query ("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) {}
在前臺(tái)頁面中調(diào)用即可繪制分頁按鈕
@PageHelper.CreatePaginateButton(246, 10, "/usermanager/attentionlist/")
下面是幾張分頁按鈕效果圖:
對應(yīng)的HTML代碼:
關(guān)于如何在ASP.NET MVC5中實(shí)現(xiàn)一個(gè)分頁查詢功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。