Asp.net MVC 中利用jquery datatables 实现数据分页显示功能

所属分类: 网络编程 / ASP.NET 阅读数: 1935
收藏 0 赞 0 分享

1、Controller中的方法代码如下:

由于方法中的存储过程没有带分页参数,所以还可以有继续优化的空间。

/// <summary>
    /// 获取测点列表
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    public JsonResult GetMeasurePointList(string TreeID, string TreeType, int sEcho, int iDisplayStart, int iDisplayLength)
    {
      DataTable dtResult = new DataTable();
      string sql = string.Format("EXEC P_GET_ZXJG_TagList '{0}','{1}'", TreeID, TreeType);
      dtResult = QuerySQL.GetDataTable(sql);
      dtResult.Columns.Add("XuHao", typeof(string));
      dtResult.Columns.Add("StrValueTime", typeof(string));
      for (int i = 0; i < dtResult.Rows.Count; i++)
      {
        dtResult.Rows[i]["XuHao"] = (i + 1).ToString();
        dtResult.Rows[i]["StrValueTime"] = Convert.ToDateTime(dtResult.Rows[i]["F_ValueTime"]).ToString("yyyy-MM-dd HH:mm:ss");
      }
      int iTotalRecords = 0;
      int iTotalDisplayRecords = 0;
      List<DataRow> queryList = dtResult.AsEnumerable().ToList();
      iTotalRecords = queryList.Count();
      queryList = queryList.Skip(iDisplayStart).Take(iDisplayLength).ToList();
      iTotalDisplayRecords = queryList.Count();
      var temp = from p in queryList
            select new
            {
              XuHao = p.Field<string>("XuHao").ToString(),
              F_Description = p.Field<string>("F_Description").ToString(),
              StrValueTime = p.Field<string>("StrValueTime").ToString(),
              F_Value = p.Field<decimal>("F_Value").ToString(),
              F_Unit = p.Field<string>("F_Unit").ToString(),
              F_AlmLow = p.Field<decimal>("F_AlmLow").ToString(),
              F_AlmUp = p.Field<decimal>("F_AlmUp").ToString()
            };
      return Json(new
        {
          draw = sEcho,
          recordsFiltered = iTotalRecords,
          recordsTotal = iTotalDisplayRecords,
          data = temp.ToList()
        }, JsonRequestBehavior.AllowGet);
    }

2、cshtml视图页面中代码如下:

function InitData() {
    var dataTable = $('#tbMeasurePointList').DataTable({
      "scrollY": "hidden",
      "scrollCollapse": false,
      "dom": 'tr<"bottom"lip><"clear">',
      language: {
        lengthMenu: '',//左上角的分页大小显示。
        search: '<span class="label label-success">搜索:</span>',//右上角的搜索文本,可以写html标签
        loadingRecords: '数据加载中...',
        paginate: {
          //分页的样式内容。
          previous: "上一页",
          next: "下一页",
          first: "",
          last: ""
        },
        zeroRecords: "暂无数据",//table tbody内容为空时,tbody的内容。
        //下面三者构成了总体的左下角的内容。
        info: "<span class='pagesStyle'>总共<span class='recordsStyle'> _TOTAL_ 条,计 _PAGES_ </span>页,当前显示 _START_ -- _END_ 条记录 </span>",//左下角的信息显示,大写的词为关键字。初始_MAX_ 条 
        infoEmpty: "0条记录",//筛选为空时左下角的显示。
        infoFiltered: ""//筛选之后的左下角筛选提示,
      },
      "lengthChange": false,
      "ordering": false,
      "iDisplayLength": 10,
      "searching": false,
      destroy: true, //Cannot reinitialise DataTable,解决重新加载表格内容问题 
      "serverSide": true,
      "sAjaxSource": "@Url.Action("GetMeasurePointList", "OnlineMonitor")",
      "fnServerData": function (sSource, aoData, fnCallback) {
        aoData.push({ "name": "TreeID", "value": $("#hidTreeID").val() });
        aoData.push({ "name": "TreeType", "value": $("#hidTreeType").val() });
        $.ajax({
          "dataType": 'json',
          "type": "POST",
          "url": sSource,
          "data": aoData,
          "success": fnCallback
        });
      },
      "aoColumns": [
        { "mDataProp": "XuHao", "width": "50" },
        { "mDataProp": "F_Description", "width": "400" },
        { "mDataProp": "StrValueTime", "width": "200" },
        { "mDataProp": "F_Value", "width": "100" },
        { "mDataProp": "F_Unit", "width": "100" },
        { "mDataProp": "F_AlmLow", "width": "100" },
        { "mDataProp": "F_AlmUp", "width": "100"}
      ],
      "createdRow": function (row, data, index) {
        $(row).children('td').eq(0).attr('style', 'text-align: center;');
        $(row).children('td').eq(1).attr('style', 'text-align: left;');
        $(row).children('td').eq(2).attr('style', 'text-align: center;');
        $(row).children('td').eq(3).attr('style', 'text-align: right;');
        $(row).children('td').eq(4).attr('style', 'text-align: center;');
        $(row).children('td').eq(5).attr('style', 'text-align: right;');
        $(row).children('td').eq(6).attr('style', 'text-align: right;');
      }
    });
  }

3、实际显示效果如下图所示:

以上所述是小编给大家介绍的Asp.net MVC 中利用jquery datatables 实现数据分页显示,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

.NET Core源码解析配置文件及依赖注入

这篇文章我们设计了一些复杂的概念,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等
收藏 0 赞 0 分享

.NET Corek中Git的常用命令及实战演练

这篇文章将通过故事的形式从Git的历史谈起,并讲述Git的强大之处。然后通过实战演练教你如何在Github以及码云上托管我们的代码并进行代码的版本控制
收藏 0 赞 0 分享

Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解

这篇文章主要给大家介绍了关于Asp.Net Core WebAPI使用Swagger时API隐藏和分组的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Asp.Net Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

如何利用FluentMigrator实现数据库迁移

这篇文章主要给大家介绍了关于如何利用FluentMigrator实现数据库迁移的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core利用Jaeger实现分布式追踪详解

这篇文章主要给大家介绍了关于ASP.NET Core利用Jaeger实现分布式追踪的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题

这篇文章主要介绍了ASP.NET Core2.2到3.0可能会遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解.net core webapi 前后端开发分离后的配置和部署

这篇文章主要介绍了.net core webapi 前后端开发分离后的配置和部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁

这篇文章主要介绍了ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

.net 4.5部署到docker容器的完整步骤

这篇文章主要给大家介绍了关于.net 4.5部署到docker容器的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用.net4.5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

.net core并发下线程安全问题详解

这篇文章主要给大家介绍了关于.net core并发下线程安全问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多