主要的技术点不在这里一一阐述,相关存储也是引用别人的,主要技术点就是通过最优性能方式处理需求,PagedList.包需要在线安装就可以

直接上干货

1、存储代码之第一种: 参数相对多点

  1. /**//*
  2. @strTable --要显示的表或多个表的连接
  3. @strField --要查询出的字段列表,*表示全部字段
  4. @pageSize --每页显示的记录个数
  5. @pageIndex --要显示那一页的记录
  6. @strWhere --查询条件,不需where
  7. @strSortKey --用于排序的主键
  8. @strSortField --用于排序,如:id desc (多个id desc,dt asc)
  9. @strOrderBy --排序,0-顺序,1-倒序
  10. @UsedTime --耗时测试时间差
  11. @RecordCount --总记录数
  12. @pageCount --总页数
  13. */
  14.  
  15. ALTER PROCEDURE [dbo].[fyPager]
  16. @strTable varchar(1000) = '[dbo].[ttable]',
  17. @strField varchar(1000) = '*',
  18. @pageSize int = 10,
  19. @pageIndex int = 1,
  20. @strWhere varchar(1000) = '1=1',
  21. @strSortKey varchar(1000) = 'id',
  22. @strSortField varchar(500) = 'id DESC',
  23. @strOrderBy bit = 1,
  24. @RecordCount int output, --总记录数
  25. @pageCount int output
  26. --@UsedTime int OUTPUT
  27. AS
  28. SET NOCOUNT ON
  29. Declare @sqlcount INT
  30. Declare @timediff DATETIME
  31. select @timediff=getdate()
  32. Begin Tran
  33. DECLARE @sql nvarchar(1000),@where1 varchar(200),@where2 varchar(200)
  34. IF @strWhere is null or rtrim(@strWhere)=''
  35. BEGIN--没有查询条件
  36. SET @where1=' WHERE '
  37. SET @where2=' '
  38. END
  39. ELSE
  40. BEGIN--有查询条件
  41. SET @where1=' WHERE ('+@strWhere+') AND ' --本来有条件再加上此条件
  42. SET @where2=' WHERE ('+@strWhere+') ' --原本没有条件而加上此条件
  43. END
  44. --SET @sql='SELECT @intResult=COUNT(*) FROM '+@strTable+@where2
  45.  
  46. BEGIN
  47. SET @sql='SELECT @sqlcount=COUNT(*) FROM (select '+@strSortKey+' from '+ @strTable + @where2 +') As tmptab'
  48. END
  49. --print @sql
  50.  
  51. EXEC sp_executesql @sql,N'@sqlcount int OUTPUT',@sqlcount OUTPUT --计算总记录数
  52. SELECT @RecordCount = @sqlcount --设置总记录数
  53. IF @pageIndex=1 --第一页
  54. BEGIN
  55. SET @sql='SELECT TOP '+CAST(@pageSize AS varchar(200))+' '+@strField+' FROM '+@strTable+@where2+'ORDER BY '+ @strSortField
  56. END
  57. Else
  58. BEGIN
  59. IF @strOrderBy=0
  60. SET @sql='SELECT TOP '+CAST(@pageSize AS varchar(200))+' '+@strField+ ' FROM '+
  61. @strTable+@where1+@strSortKey+'>(SELECT MAX('+case when charindex('.',@strSortKey)>0 then right(@strSortKey,len(@strSortKey)-charindex('.',@strSortKey)) else @strSortKey end+') '+ ' FROM (SELECT TOP '+
  62. CAST(@pageSize*(@pageIndex-1) AS varchar(200))+' '+@strSortKey+' FROM '+@strTable+@where2+
  63. 'ORDER BY '+@strSortField+') t) ORDER BY '+@strSortField
  64. ELSE
  65. SET @sql='SELECT TOP '+CAST(@pageSize AS varchar(200))+' '+@strField+' FROM '+@strTable+@where1+
  66. @strSortKey+'<(SELECT MIN('+case when charindex('.',@strSortKey)>0 then right(@strSortKey,len(@strSortKey)-charindex('.',@strSortKey)) else @strSortKey end+') '+ ' FROM (SELECT TOP '+CAST(@pageSize*(@pageIndex-1) AS varchar(200))+' '+
  67. @strSortKey+' FROM '+@strTable+@where2+'ORDER BY '+@strSortField+') t) ORDER BY '+@strSortField+''
  68. END
  69. print @sql
  70. EXEC(@sql)
  71. print @sql
  72. If @@Error <> 0
  73. Begin
  74. RollBack Tran
  75. Return -1
  76. End
  77. Else
  78. Begin
  79. Commit TRAN
  80. --set @UsedTime = datediff(ms,@timediff,getdate())
  81. --select datediff(ms,@timediff,getdate()) as 耗时
  82. Return @sqlcount
  83. End

执行测试:

  1. USE [test]
  2. GO
  3.  
  4. DECLARE @return_value int,
  5. @RecordCount int,
  6. @pageCount int
  7.  
  8. EXEC @return_value = [dbo].[fyPager]
  9. @strTable = N'TRA_BargainOrder_Test A join UserInfo_test B ON A.UserID = B.Id',
  10. @strField = N'*',
  11. @pageSize = 10,
  12. @pageIndex = 9,
  13. @strWhere = N'',
  14. @strSortKey = N'TRA_BargainOrder_TestID',
  15. @strSortField = N'TRA_BargainOrder_TestID desc',
  16. @strOrderBy = 1,
  17.  
  18. @RecordCount = @RecordCount OUTPUT,
  19. @pageCount = @pageCount OUTPUT
  20.  
  21. SELECT @RecordCount as N'@RecordCount',
  22. @pageCount as N'@pageCount'
  23.  
  24. SELECT 'Return Value' = @return_value
  25.  
  26. GO

  

2、VIEW 页面层 GxFy_PageList2.cshtml

  1. <link href="~/Content/bootstrap.css" rel="stylesheet" />
  2. <link href="~/Content/PagedList.css" rel="stylesheet" />
  3.  
  4. @model PagedList.StaticPagedList<Models.TRA_BargainOrder_Test>
  5. @using PagedList.Mvc
  6. @using PagedList
  7.  
  8. @using (Html.BeginForm("Index", "Home", FormMethod.Get))
  9. {
  10. <div class="well">
  11. <table class="table">
  12.  
  13. @* <thead>
  14. <tr>
  15. <th>
  16. <input id="UserName" name="UserName" type="text" placeholder="请输入用户名" />
  17. </th>
  18. <th>
  19. <input id="OrderNum" name="OrderNum" type="text" placeholder="请输入订单号" />
  20. </th>
  21. <th>
  22. <input id="Submit1" type="submit" value="submit" />
  23. </th>
  24. </tr>
  25. </thead>*@
  26.  
  27. <tr>
  28. <th>用户名</th>
  29. <th>地址</th>
  30. <th>订单编号</th>
  31. <th>城市代号</th>
  32. <th>时间</th>
  33. <th>订单状态</th>
  34. </tr>
  35. <tbody>
  36.  
  37. @* @foreach (var item in ViewBag.List) *@
  38. @*用model展示数据*@
  39. @foreach (var item in Model)
  40. {
  41. <tr>
  42. <td>@item.UserName </td>
  43. <td>@item.LocalAddress </td>
  44. <td>@item.BargainOrderCode </td>
  45. <td>@item.CityCode </td>
  46. <td>@item.UpdateTime </td>
  47. <td>@item.OrderStatus </td>
  48.  
  49. </tr>
  50.  
  51. }
  52.  
  53. </tbody>
  54.  
  55. <tfoot>
  56. <tr>
  57. <td colspan="5">
  58. <div class="">
  59. @if (Model != null)
  60. {
  61. <span style="height: 20px; line-height: 20px;">共 @Model.TotalItemCount.ToString() 条记录,当前第 @Model.PageNumber 页/共 @Model.PageCount 页 </span>
  62. @Html.PagedListPager(Model, pageindex => Url.Action("GxFy_PageList2", new { pageindex }), new PagedListRenderOptions() { LinkToFirstPageFormat = "首页", LinkToNextPageFormat = "下一页", LinkToPreviousPageFormat = "上一页", LinkToLastPageFormat = "末页", DisplayItemSliceAndTotal = false, MaximumPageNumbersToDisplay = 3 })
  63. }
  64.  
  65. </div>
  66. </td>
  67. </tr>
  68. </tfoot>
  69.  
  70. </table>
  71. </div>
  72.  
  73. }

3、Controller 控制器代码:

  1. public ActionResult GxFy_PageList2(string orderNO, int pageindex = 1, int pageSize = 10)
  2. {
  3. orderNO = "20185555555443342";
  4. #region 分页
  5.  
  6. int RecordCount = 0;
  7. int pageCount = 0;
  8. string strField = "*";
  9. int strOrderBy = 1;
  10. string strSortField = "CreateTime desc";
  11. string strSortKey = "TRA_BargainOrder_TestID";
  12. //string strTable = "TRA_BargainOrder_Test";//单表
  13. string strTable = "TRA_BargainOrder_Test A join UserInfo_test B ON A.UserID = B.Id";// 多表联合查询
  14. string strWhere = "1=1";
  15. int UsedTime = 0;
  16.  
  17. #endregion
  18.  
  19. #region 参数处理
  20.  
  21. //if (!string.IsNullOrEmpty(orderNO))
  22. // {
  23. // pageinationInfo.strWhere += " and BargainOrderCode like '%" + orderNO.Trim() + "%'";
  24. // }
  25.  
  26. //if (!string.IsNullOrEmpty(orderNO))
  27. //{
  28. // strWhere += "and BargainOrderCode =" + orderNO.Trim() + "";
  29. //}
  30. #endregion
  31.  
  32. PageinationInfoService Service = new PageinationInfoService();
  33. IList<TRA_BargainOrder_Test> List = Service.Get_PageinationInfoList<TRA_BargainOrder_Test>(strTable, strField, pageSize, pageindex, strWhere, strSortKey, strSortField, strOrderBy, out RecordCount,out pageCount);
  34.  
  35. #region 传值
  36. //pageNumber,pageSize 我们已经传递到View,可以通过相关插件展现分页效果 在这里进行pagedlist分页
  37. //pagedList还提供了另外一种方法:StaticPagedList 方法
  38. //StaticPagedList 方法需要提供四个参数,分别为:数据源  当前页码  每页条数  以及总记录数
  39.  
  40. var PageList = new StaticPagedList<TRA_BargainOrder_Test>(List, pageindex, 10, RecordCount);
  41.  
  42. #region 页面用 ViewBag.List 显示列表信息时可以使用一下方式
  43. //页面用 ViewBag.List 显示列表信息时可以使用一下方式
  44. //// ViewBag.List = List;
  45. //ViewBag.List = PageList;
  46.  
  47. //ViewBag.pageNumber = pageindex;
  48. //ViewBag.pageSize = pageSize;
  49. //ViewBag.RecordCount = RecordCount;
  50. //ViewBag.BargainOrderCode = orderNO;
  51. //return View();
  52. #endregion
  53.  
  54. #region 页面用PagedList.StaticPagedList medel 实体展示分页数据
  55.  
  56. return View(PageList);
  57. #endregion
  58. #endregion
  59.  
  60. }

 4、调用封装的存储通用类 PageinationInfoService

  1. public class PageinationInfoService
  2. {
  3. /// <summary>
  4. /// 获取分页列表 一种写法
  5. /// 传入的参数是实体和PageinationInfo,实体主要是用于接收数据并封装到实体中
  6.         /// </summary>
  7.         /// <param name="pageinationInfo"></param>
  8.         /// <returns></returns>
  9. public IList<Entity> GetPageinationInfoList<Entity>(PageinationInfo pageinationInfo) where Entity : class
  10. {
  11. dynamic result = null;
  12. using (DefaultDbContext db = new DefaultDbContext())
  13. {
  14.  
  15. #region SqlParameter参数
  16. SqlParameter[] paras = new SqlParameter[9];
  17. paras[0] = new SqlParameter("strTable", DbType.String);
  18. paras[0].Value = pageinationInfo.strTable;
  19.  
  20. paras[1] = new SqlParameter("strField", DbType.String);
  21. paras[1].Value = pageinationInfo.strField;
  22.  
  23. paras[2] = new SqlParameter("pageSize", DbType.Int32);
  24. paras[2].Value = pageinationInfo.pageSize;
  25.  
  26. paras[3] = new SqlParameter("pageIndex", DbType.Int32);
  27. paras[3].Value = pageinationInfo.pageIndex;
  28.  
  29. paras[4] = new SqlParameter("strWhere", DbType.String);
  30. paras[4].Value = pageinationInfo.strWhere;
  31.  
  32. paras[5] = new SqlParameter("strSortKey", DbType.String);
  33. paras[5].Value = pageinationInfo.strSortKey;
  34.  
  35. paras[6] = new SqlParameter("strSortField", DbType.String);
  36. paras[6].Value = pageinationInfo.strSortField;
  37.  
  38. paras[7] = new SqlParameter("strOrderBy", DbType.Boolean);
  39. paras[7].Value = pageinationInfo.strOrderBy;
  40.  
  41. paras[8] = new SqlParameter("RecordCount", DbType.Int32);
  42. paras[8].Value = pageinationInfo.RecordCount;
  43. paras[8].Direction = ParameterDirection.Output;
  44.  
  45. paras[9] = new SqlParameter("pageCount", DbType.Int32);
  46. paras[9].Value = pageinationInfo.RecordCount;
  47. paras[9].Direction = ParameterDirection.Output;
  48. // paras[9] = new SqlParameter("UsedTime", DbType.Int32);
  49. // paras[9].Value = pageinationInfo.UsedTime;
  50. //paras[9].Direction = ParameterDirection.Output;
  51.  
  52. #endregion
  53.  
  54. try
  55. {
  56. result = db.Database.SqlQuery<Entity>("exec SP_Procedure_PageGX @strTable,@strField,@pageSize,@pageIndex,@strWhere,@strSortKey,@strSortField,@strOrderBy,@RecordCount output,@pageCount output", paras).ToList(); //,@UsedTime output
  57. pageinationInfo.RecordCount = (int)paras[8].Value;
  58. pageinationInfo.PageCount = (int)paras[9].Value;
  59.  
  60. // pageinationInfo.UsedTime = (int)paras[9].Value;
  61. }
  62. catch (Exception ex)
  63. {
  64. throw (ex);
  65. }
  66. }
  67. return result;
  68.  
  69. }
  70.  
  71. /// <summary>
  72. /// 第二种 封装直接传参写法 传入的参数是实体
  73. /// </summary>
  74. /// <typeparam name="Entity"></typeparam>
  75. /// <returns></returns>
  76. public IList<Entity> Get_PageinationInfoList<Entity>(string strTable, string strField, int pageSize, int pageIndex, string strWhere, string strSortKey, string strSortField, int strOrderBy, out int RecordCount, out int PageCount) where Entity : class
  77. {
  78. dynamic result = null;
  79. using (DefaultDbContext db = new DefaultDbContext())
  80. {
  81.  
  82. SqlParameter[] parameters =
  83. {
  84. new SqlParameter("@strTable", SqlDbType.VarChar),
  85. new SqlParameter("@strField", SqlDbType.VarChar),
  86. new SqlParameter("@pageSize", SqlDbType.Int),
  87. new SqlParameter("@pageIndex", SqlDbType.Int),
  88. new SqlParameter("@strWhere", SqlDbType.VarChar),
  89. new SqlParameter("@strSortKey", SqlDbType.VarChar),
  90. new SqlParameter("@strSortField", SqlDbType.VarChar),
  91. new SqlParameter("@strOrderBy", SqlDbType.Int),
  92. new SqlParameter("@RecordCount", SqlDbType.Int),
  93. new SqlParameter("@pageCount", SqlDbType.Int)
  94.  
  95. };
  96.  
  97. parameters[0].Value = strTable;
  98. parameters[1].Value = strField;
  99. parameters[2].Value = pageSize;
  100. parameters[3].Value = pageIndex;
  101. parameters[4].Value = strWhere;
  102. parameters[5].Value = strSortKey;
  103. parameters[6].Value = strSortField;
  104. parameters[7].Value = strOrderBy;
  105. parameters[8].Direction = ParameterDirection.Output;
  106. parameters[9].Direction = ParameterDirection.Output;
  107. var data = db.Database.SqlQuery<Entity>("exec fyPager @strTable,@strField,@pageSize,@pageIndex,@strWhere,@strSortKey,@strSortField,@strOrderBy,@RecordCount output,@pageCount output", parameters).ToList();
  108. int count = data.Count;
  109. //
  110.  
  111. string Rcount = parameters[8].Value.ToString();
  112. string Pagecount = parameters[9].Value.ToString();
  113. //
  114. PageCount = !string.IsNullOrEmpty(Pagecount) ? int.Parse(Pagecount) : 0;
  115. RecordCount = !string.IsNullOrEmpty(Rcount) ? int.Parse(Rcount) : 0;
  116. return data;
  117. }
  118.  
  119. }
  120.  
  121. /// <summary>
  122. /// 第三种 封装直接传参写法
  123. /// </summary>
  124. /// <typeparam name="Entity"></typeparam>
  125. /// <param name="pageinationInfo"></param>
  126. /// <returns></returns>
  127. public IList<Entity> Get_PageinationInfo_List<Entity>(string strTable, string strField, string strSortField, string strWhere, int pageSize, int pageIndex, out int PageCount, out int RecordCount ) where Entity : class
  128. {
  129. dynamic result = null;
  130. using (DefaultDbContext db = new DefaultDbContext())
  131. {
  132.  
  133. SqlParameter[] parameters =
  134. {
  135. new SqlParameter("@TableName", SqlDbType.VarChar),
  136. new SqlParameter("@Fields", SqlDbType.VarChar),
  137. new SqlParameter("@OrderField", SqlDbType.VarChar),
  138. new SqlParameter("@sqlWhere", SqlDbType.VarChar),
  139. new SqlParameter("@pageSize", SqlDbType.Int),
  140. new SqlParameter("@pageIndex", SqlDbType.Int),
  141. new SqlParameter("@TotalPage", SqlDbType.Int),
  142. new SqlParameter("@RecordCount", SqlDbType.Int)
  143.  
  144. };
  145.  
  146. parameters[0].Value = strTable;
  147. parameters[1].Value = strField;
  148. parameters[2].Value = strSortField;
  149. parameters[3].Value = strWhere;
  150. parameters[4].Value = pageSize;
  151. parameters[5].Value = pageIndex;
  152. parameters[6].Direction = ParameterDirection.Output;
  153. parameters[7].Direction = ParameterDirection.Output;
  154. var data = db.Database.SqlQuery<Entity>("exec SP_Procedure_PageGX @TableName,@Fields,@OrderField,@sqlWhere,@pageSize,@pageIndex,@TotalPage output,@RecordCount output", parameters).ToList();
  155. int count = data.Count;
  156. //
  157.  
  158. string Pagecount = parameters[6].Value.ToString();
  159. string Rcount = parameters[7].Value.ToString();
  160. //
  161. PageCount = !string.IsNullOrEmpty(Pagecount) ? int.Parse(Pagecount) : 0;
  162. RecordCount = !string.IsNullOrEmpty(Rcount) ? int.Parse(Rcount) : 0;
  163. return data;
  164. }
  165.  
  166. }
  167.  
  168. }

 5、相关Model实体类 

  1. public class TRA_BargainOrder_Test
  2. {
  3. public int ischeck
  4. {
  5. get; set;
  6. }
  7.  
  8. public long TRA_BargainOrder_TestID
  9. {
  10. get; set;
  11. }
  12.  
  13. /// <summary>
  14. /// 订单编号
  15. /// </summary>
  16. public string BargainOrderCode
  17. {
  18. get; set;
  19. }
  20. /// <summary>
  21. /// 城市代号
  22. /// </summary>
  23. public string CityCode
  24. {
  25. get; set;
  26. }
  27.  
  28. public string ParkUserId
  29. {
  30. get; set;
  31. }
  32.  
  33. public int FlowStatus
  34. {
  35. get; set;
  36. }
  37.  
  38. public DateTime UpdateTime
  39. {
  40. get; set;
  41. }
  42.  
  43. public int OrderStatus
  44. {
  45. get; set;
  46. }
  47.  
  48. public int PayStatus
  49. {
  50. get; set;
  51. }
  52.  
  53. public DateTime CreateTime
  54. {
  55. get; set;
  56. }
  57. public string ExpressCode { get; set; }
  58. /// <summary>
  59. /// 用户ID
  60. /// </summary>
  61. public int UserID { get; set; }
  62.  
  63. #region 涉及到用户信息表数据
  64. /// <summary>
  65. /// 用户名
  66. /// </summary>
  67. public string UserName
  68. {
  69. get; set;
  70. }
  71. /// <summary>
  72. /// 地址
  73. /// </summary>
  74. public string LocalAddress
  75. {
  76. get; set;
  77. }
  78. #endregion
  79. }

  6、页面展示效果图  在这里说明下 通过单表或者多表 都可以实现数据分页效果

7、存储之第二种方式  参数性对少点 效果性能 也是不错 自行选择

  1. ALTER PROCEDURE [dbo].[SP_Procedure_PageGX]
  2. (
  3. @TableName varchar (5000), --要显示的表或多个表的连接
  4. @Fields varchar(3000)='*', --表中的字段,可以使用*代替
  5. @OrderField varchar(500), --要排序的字段
  6. @sqlWhere varchar(500)=NULL, --WHERE子句
  7. @pageSize int, --分页的大小
  8. @pageIndex int, --要显示的页的索引
  9. @TotalPage int output, --页的总数
  10. @RecordCount int output --总记录数
  11. )
  12. as
  13.  
  14. begin
  15.  
  16. Begin Tran
  17.  
  18. Declare @sql nvarchar(4000);
  19. Declare @totalRecord int; --记录总数
  20.  
  21. if (@sqlWhere IS NULL or @sqlWhere = '') set @sql = 'select @totalRecord = count(*) from ' + @TableName
  22. else
  23.  
  24. set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere
  25. --执行sql语句得到记录总数
  26. EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT
  27. select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)
  28. select @RecordCount=CEILING(@totalRecord)
  29. --根据特定的排序字段为为行分配唯一ROW_NUMBER的顺序
  30. if (@sqlWhere IS NULL or @sqlWhere = '')
  31. set @sql = 'select * from (select ROW_NUMBER() over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName
  32. else
  33. set @sql = 'select * from (select ROW_NUMBER() over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere
  34. --确保当前页的索引在合理的范围之内
  35.  
  36. if @PageIndex<=0
  37. Set @pageIndex = 1
  38. if @pageIndex>@TotalPage
  39. Set @pageIndex = @TotalPage
  40. --得到当前页在整个结果集中准确的ROW_NUMBER
  41.  
  42. Declare @StartRecord int
  43. Declare @EndRecord int
  44. set @StartRecord = (@pageIndex-1)*@PageSize + 1
  45. set @EndRecord = @StartRecord + @pageSize - 1
  46.  
  47. --输出当前页中的数据
  48.  
  49. set @Sql = @Sql + ') as t' + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)
  50.  
  51. Exec(@Sql)
  52. If @@Error <> 0
  53.  
  54. Begin
  55. RollBack Tran
  56. Return -1
  57. End
  58. Else
  59. Begin
  60. Commit Tran
  61. Return @totalRecord
  62. End
  63. End

 执行测试:

  1. USE [test]
  2. GO
  3.  
  4. DECLARE @return_value int,
  5. @TotalPage int,
  6. @RecordCount int
  7.  
  8. EXEC @return_value = [dbo].[SP_Procedure_PageGX]
  9. @TableName = N'TRA_BargainOrder_Test A join UserInfo_test B ON A.UserID = B.Id',
  10. @Fields = N'*',
  11. @OrderField = N'CreateTime DESC',
  12. @sqlWhere = N'1=1',
  13. @pageSize = 10,
  14. @pageIndex = 8,
  15. @TotalPage = @TotalPage OUTPUT,
  16. @RecordCount = @RecordCount OUTPUT
  17.  
  18. SELECT @TotalPage as N'@TotalPage',
  19. @RecordCount as N'@RecordCount'
  20.  
  21. SELECT 'Return Value' = @return_value
  22.  
  23. GO

8、view层代码

  1. GxFy_PageList3
  1. <link href="~/Content/bootstrap.css" rel="stylesheet" />
  2. <link href="~/Content/PagedList.css" rel="stylesheet" />
  3.  
  4. @model PagedList.StaticPagedList<EFAutofacMVC.Models.TRA_BargainOrder_Test>
  5. @using PagedList.Mvc
  6. @using PagedList
  7.  
  8. @using (Html.BeginForm("Index", "Home", FormMethod.Get))
  9. {
  10. <div class="well">
  11. <table class="table">
  12.  
  13. @* <thead>
  14. <tr>
  15. <th>
  16. <input id="UserName" name="UserName" type="text" placeholder="请输入用户名" />
  17. </th>
  18. <th>
  19. <input id="OrderNum" name="OrderNum" type="text" placeholder="请输入订单号" />
  20. </th>
  21. <th>
  22. <input id="Submit1" type="submit" value="submit" />
  23. </th>
  24. </tr>
  25. </thead>*@
  26.  
  27. <tr>
  28. <th>用户名</th>
  29. <th>地址</th>
  30. <th>订单编号</th>
  31. <th>城市代号</th>
  32. <th>时间</th>
  33. <th>订单状态</th>
  34. </tr>
  35. <tbody>
  36.  
  37. @* @foreach (var item in ViewBag.List) *@
  38. @*用model展示数据*@
  39. @foreach (var item in Model)
  40. {
  41. <tr>
  42. <td>@item.UserName </td>
  43. <td>@item.LocalAddress </td>
  44. <td>@item.BargainOrderCode </td>
  45. <td>@item.CityCode </td>
  46. <td>@item.UpdateTime </td>
  47. <td>@item.OrderStatus </td>
  48.  
  49. </tr>
  50.  
  51. }
  52.  
  53. </tbody>
  54.  
  55. <tfoot>
  56. <tr>
  57. <td colspan="5">
  58. <div class="">
  59. @if (Model != null)
  60. {
  61. <span style="height: 20px; line-height: 20px;">共 @Model.TotalItemCount.ToString() 条记录,当前第 @Model.PageNumber 页/共 @Model.PageCount 页 </span>
  62. @Html.PagedListPager(Model, pageindex => Url.Action("GxFy_PageList3", new { pageindex }), new PagedListRenderOptions() { LinkToFirstPageFormat = "首页", LinkToNextPageFormat = "下一页", LinkToPreviousPageFormat = "上一页", LinkToLastPageFormat = "末页", DisplayItemSliceAndTotal = false, MaximumPageNumbersToDisplay = 3 })
  63. }
  64.  
  65. </div>
  66. </td>
  67. </tr>
  68. </tfoot>
  69.  
  70. </table>
  71. </div>
  72.  
  73. }

9、控制器代码

  1. /// <summary>
  2. /// 第三种
  3. /// </summary>
  4. /// <param name="orderNO"></param>
  5. /// <param name="pageindex"></param>
  6. /// <param name="pageSize"></param>
  7. /// <returns></returns>
  8. public ActionResult GxFy_PageList3(string orderNO, int pageindex = , int pageSize = )
  9. {
  10. orderNO = "";
  11. #region 分页
  12.  
  13. int RecordCount = ;
  14. int pageCount = ;
  15. string strField = "*";
  16.  
  17. string strSortField = "CreateTime desc";
  18.  
  19. //string strTable = "TRA_BargainOrder_Test";//单表
  20. string strTable = "TRA_BargainOrder_Test A join UserInfo_test B ON A.UserID = B.Id";// 多表联合查询
  21. string strWhere = "1=1";
  22. int UsedTime = ;
  23.  
  24. #endregion
  25.  
  26. #region 参数处理
  27.  
  28. //if (!string.IsNullOrEmpty(orderNO))
  29. // {
  30. // pageinationInfo.strWhere += " and BargainOrderCode like '%" + orderNO.Trim() + "%'";
  31. // }
  32.  
  33. //if (!string.IsNullOrEmpty(orderNO))
  34. //{
  35. // strWhere += "and BargainOrderCode =" + orderNO.Trim() + "";
  36. //}
  37. #endregion
  38.  
  39. PageinationInfoService Service = new PageinationInfoService();
  40. IList<TRA_BargainOrder_Test> List = Service.Get_PageinationInfo_List<TRA_BargainOrder_Test>(strTable, strField, strSortField, strWhere, pageSize, pageindex, out pageCount, out RecordCount);
  41.  
  42. #region 传值
  43. //pageNumber,pageSize 我们已经传递到View,可以通过相关插件展现分页效果 在这里进行pagedlist分页
  44. //pagedList还提供了另外一种方法:StaticPagedList 方法
  45. //StaticPagedList 方法需要提供四个参数,分别为:数据源  当前页码  每页条数  以及总记录数
  46.  
  47. var PageList = new StaticPagedList<TRA_BargainOrder_Test>(List, pageindex, , RecordCount);
  48.  
  49. #region 页面用 ViewBag.List 显示列表信息时可以使用一下方式
  50. //页面用 ViewBag.List 显示列表信息时可以使用一下方式
  51. //// ViewBag.List = List;
  52. //ViewBag.List = PageList;
  53.  
  54. //ViewBag.pageNumber = pageindex;
  55. //ViewBag.pageSize = pageSize;
  56. //ViewBag.RecordCount = RecordCount;
  57. //ViewBag.BargainOrderCode = orderNO;
  58. //return View();
  59. #endregion
  60.  
  61. #region 页面用PagedList.StaticPagedList medel 实体展示分页数据
  62.  
  63. return View(PageList);
  64. #endregion
  65. #endregion
  66.  
  67. }

10、封装层存储调用类中方法 Get_PageinationInfo_List 即可  效果展示 如同上

 

  

  

MVC+EF+PagedList+调用通用存储封装+多表联合信息展示分页+存储过程分页的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  2. MVC EF 修改 封装类 通用泛型方法(一)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  3. MVC EF 修改 封装类 通用泛型方法(二)

    修改 这个 方法 如下. 排除 null 值. /// <summary> /// 修改 多数 数据, 个别数据除外, proNames 不写 则是 修改全部 /// </summa ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列

    http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...

  6. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2) ...

  9. .NET MVC+ EF+通用存储过程实现增删改功能以及使用事物处理

    引摘: 1.EF对事务进行了封装:无论何时执行任何涉及Create,Update或Delete的查询,都会默认创建事务.当DbContext类上的SaveChanges()方法被调用时,事务就会提交, ...

随机推荐

  1. Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)

    转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平 ...

  2. weblogic安装错误BEA-090870解决方案

    00.问题描述 <Sep 3, 2017 3:29:09 PM CST> <Error> <Security> <BEA-090870> <The ...

  3. 使用u盘安装os x系统

    从 App Store 下载 OS X 安装器 请执行以下步骤下载要安装的 OS X 版本. 1. 从 Apple 菜单中,选取“App Store”. 2. 按住 Option 键并点按“已购项目” ...

  4. df看到的文件系统容量跟parted看到的分区容量差别较大的解决方法

    下午同事在自己的开发机上遇到题目说到的问题,它看到挂在到/dev/sda磁盘分区5上的ext4文件系统的容量显著小于该分区的大小 df看到的文件系统容量: #df -h /dev/sda5 Files ...

  5. 【DeepLearning】Exercise:Sparse Autoencoder

    Exercise:Sparse Autoencoder 习题的链接:Exercise:Sparse Autoencoder 注意点: 1.训练样本像素值需要归一化. 因为输出层的激活函数是logist ...

  6. 基于TILE-GX实现快速数据包处理框架-netlib实现分析【转】

    最近在研究suricata源码,在匹配模式的时候,有tilegx mpipe mode,转载下文,了解一下. 原文地址:http://blog.csdn.net/lhl_blog/article/de ...

  7. Ubuntu终端命令行播放音乐(mp3)

    有很多在终端命令行播放mp3的工具,有的甚至可以生成播放列表.也只有命令行重度使用者有这个需求,下面我们来看一看这些工具. Sox Sox(Sound eXchange)是操作声音文件的瑞士军刀,它可 ...

  8. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  9. iOS 一个小动画效果-b

    近期工作不忙,来一个需求感觉棒棒的,是一个比较简单的页面,如下图(图1) 图1 应该很简单吧,没什么大的功能,就是一个展示,一个拨打电话,拨打电话不需要说,几行代码搞定,基本UI也不用说了,刚培训完的 ...

  10. JS遍历Table的所有单元格内容

    用JS去遍历Table的所有单元格中的内容,可以用如下JS代码实现: 这个方法的参数是唯一标识Table的id,用document对象的获取. function GetInfoFromTable(ta ...