查看: 558|回复: 0

[.NET源码] MVC+EasyUI+三层新闻网站建立 分页查询数据功能(七)

发表于 2018-1-1 08:00:00

MVC新闻网站建立,完成分页查询数据功能。

1、在Model里面建立NewInfo(里面存放的是新闻信息的实体信息)

然后在DAL层中建立NewInfoDal (里面存放对新闻信息的操作)

写入分页查询的代码

  1. /// <summary>
  2. /// 分页查询
  3. /// </summary>
  4. /// <param name="start">分页开始条数</param>
  5. /// <param name="end">分页结束条数</param>
  6. /// <returns>返回查询到的list集合</returns>
  7. public List<NewInfo> GetPageEntityList(int start,int end)
  8. {
  9. string sql = "select * from(select row_number()over(order by id)as num,*from T_News)as t where t.num>=@start and t.num<=@end";
  10. SqlParameter[] pms = {
  11. new SqlParameter("@start",SqlDbType.Int),
  12. new SqlParameter("@end",SqlDbType.Int),
  13. };
  14. pms[0].Value = start;
  15. pms[1].Value = end;
  16. DataTable dt = SqlHelper.ExcuteDataTable(sql,CommandType.Text,pms);
  17. List<NewInfo> newList = null;
  18. if (dt.Rows.Count>0)
  19. {
  20. newList = new List<NewInfo>();
  21. NewInfo newinfo = null;
  22. foreach (DataRow item in dt.Rows)
  23. {
  24. newinfo = new NewInfo();
  25. LoadEntity(item,newinfo);
  26. newList.Add(newinfo);
  27. }
  28. }
  29. return newList;
  30. }
  31. /// <summary>
  32. /// 查询出页面条数
  33. /// </summary>
  34. /// <returns></returns>
  35. public int GetRecordCount()
  36. {
  37. string sql = "select count(*) from T_News";
  38. int count = Convert.ToInt32(SqlHelper.ExecuteScalar(sql,CommandType.Text));
  39. return count;
  40. }
复制代码

在BLL层中建立NewInfoServices(里面存放对新闻信息的逻辑处理)

  1. DAL.NewInfoDal NewInfoDal = new DAL.NewInfoDal();
  2. /// <summary>
  3. /// 分页查询数据
  4. /// </summary>
  5. /// <param name="pageIndex">当前页码值</param>
  6. /// <param name="pageSize">一个多少条数据</param>
  7. /// <returns></returns>
  8. public List<NewInfo> GetPageEntityList(int pageIndex, int pageSize)
  9. {
  10. int start = (pageIndex - 1) * pageSize + 1;
  11. int end = pageSize * pageIndex;
  12. return NewInfoDal.GetPageEntityList(start,end);
  13. }
  14. /// <summary>
  15. /// 查询出页面的记录数
  16. /// </summary>
  17. /// <returns></returns>
  18. public int GetRecordCount()
  19. {
  20. return NewInfoDal.GetRecordCount();
  21. }
复制代码

我们把新闻管理的url指定为/NewInfo/Index

那么就要新建NewInfo控制器 Index视图就是新闻管理页面的主页了。

新闻管理主页的布局很简单就是一个表格,所以就先在body里面写了一表格

  1. <body>
  2. <div>
  3. <table id="tt"></table>
  4. </div>
  5. </body/>
复制代码

这里用到的是easyui的框架,所以先引用文件。

然后就是通过写js代码来显示出表格的行和列

  1. <script type="text/javascript">
  2. $(function () {
  3. //初始化表格
  4. initTable();
  5. });
  6. //初始化表格
  7. function initTable() {
  8. $("#tt").datagrid({
  9. //指向一个地址,当表格加载完成后自动请求该地址
  10. //自动向后台发送 rows 当前页多少条数据 page:当前页
  11. //要求返回的数据json对象 {total:200,rows:[{},{}]}
  12. url: '/NewInfo/ShowNewsList',
  13. title: "新闻管理",
  14. fitColumns: true,
  15. height: $(window).height()-10,
  16. idField: 'Id', //后台返回数据中的主键列。一定注意大小写。
  17. loadMsg: "正在加载新闻信息........",
  18. pagination: true, //启用分页
  19. singleSelect: true, //只允许选中一行
  20. pageSize: 10, //一页默认多少条
  21. pageNumber: 1, //默认页
  22. rownumbers: true,//行号
  23. pageList: [10, 20, 30], //允许一页多少条数据
  24. queryParams: {}, //异步请求可以额外传递的数据
  25. columns: [[
  26. { field: 'ck', checkbox: true, align: 'left', width: 50 }, // 设置cheakbox
  27. { field: 'Title', title: '标题', width: 120 },
  28. { field: 'SubDateTime', title: '发布时间', width: 80, formatter: ChangeDateFormat, },
  29. { field: 'Author', title: '作者', width: 80 },
  30. {
  31. field: 'operate', title: '操作', align: 'center', width: $(this).width() * 0.1,
  32. formatter: function (value, row, index) {
  33. var str = "";
  34. str += '<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" name="detail" id="detail" class="easyui-linkbutton" onclick="showDetail('+row.Id+')"></a>';
  35. str += ' ',
  36. str += '<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" name="update" id="update" class="easyui-linkbutton" onclick="updateNewInfo(' + row.Id + ')" ></a>';
  37. str += ' ',
  38. str += '<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" name="delete" id="delete" class="easyui-linkbutton" onclick="deleteNewInfo(' + row.Id + ')" ></a>';
  39. return str;
  40. }
  41. }
  42. ]],
  43. onLoadSuccess: function (data) {
  44. $("a[name='detail']").linkbutton({ text: '详情', plain: true, iconCls: 'icon-more' });
  45. $("a[name='update']").linkbutton({ text: '编辑', plain: true, iconCls: 'icon-edit' });
  46. $("a[name='delete']").linkbutton({ text: '删除', plain: true, iconCls: 'icon-cancel' });
  47. ////点击详情按钮
  48. //clickDetail();
  49. },
  50. toolbar: [{
  51. id: 'btnAdd',
  52. text: '添加',
  53. iconCls: 'icon-add',
  54. handler: function () {
  55. addBtnClick(); //添加新闻
  56. }
  57. }],
  58. });
  59. }
复制代码

要完成数据的显示则还需要查询数据库。

根据 url: '/NewInfo/ShowNewsList', 所以需要在NewInfo控制器下建立ShowNewsList方法

  1. /// <summary>
  2. /// 分页展示数据
  3. /// </summary>
  4. /// <returns></returns>
  5. public JsonResult ShowNewsList()
  6. {
  7. //要求返回的数据json对象 {total:200,rows:[{},{}]}
  8. int pageSize = int.Parse(Request["rows"]??"10");
  9. int pageIndex = int.Parse(Request["page"]??"1");
  10. List<NewInfo> newInfoList= NewInfoBll.GetPageEntityList(pageIndex, pageSize);
  11. //查询所有数据
  12. var allNews = NewInfoBll.GetRecordCount();
  13. //把totle和rows:[{},{}]一起返回
  14. //先建立一个匿名类
  15. var dataJson = new { total = allNews, rows = newInfoList };
  16. var json = Json(dataJson, JsonRequestBehavior.AllowGet);
  17. return json;
  18. }
复制代码


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报