ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

下面是“ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项”的攻略:

1. 准备工作

首先,需要确保已经安装好了以下环境:

  • .NET Framework 4.0及以上版本
  • Visual Studio 2012及以上版本
  • ASP.NET MVC 4.0及以上版本
  • Entity Framework 6.0及以上版本
  • jqGrid插件或jquery Datatables插件

在完成以上环境的安装后,需要在项目中添加相关的引用,如下所示:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery-ui.js"></script>
<link href="~/Content/jquery-ui.css" rel="stylesheet" />
<link href="~/Content/ui.jqgrid.css" rel="stylesheet" />
<script src="~/Scripts/jquery.jqGrid.min.js"></script>
<script src="~/Scripts/i18n/grid.locale-cn.js"></script>
<script src="~/Scripts/datatables.min.js"></script>
<link href="~/Content/datatables.min.css" rel="stylesheet" />

2. 使用jqGrid进行服务器端分页

首先,需要在页面中定义一个div,用于渲染jqGrid表格。如下所示:

<div id="grid"></div>

然后,在页面中编写相关的JavaScript代码来初始化jqGrid表格,并进行服务器端分页。示例代码如下:

$(document).ready(function () {
        $("#grid").jqGrid({
            url: '/Home/GridData',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['ID', '名称', '地址'],
            colModel: [
                { name: 'ID', index: 'ID', width: 30 },
                { name: 'Name', index: 'Name', width: 120 },
                { name: 'Address', index: 'Address', width: 200 }
            ],
            pager: '#gridPager',
            rowNum: 20,
            height: 'auto',
            autowidth: true,
            rownumbers: true,
            rowList: [20, 30, 50],
            viewrecords: true,
            caption: '示例表格',
            jsonReader: {
                root: 'rows',
                page: 'page',
                total: 'total',
                records: 'records',
                repeatitems: false,
                id: '0'
            }
        });
        $("#grid").jqGrid('navGrid', '#gridPager', { edit: false, add: false, del: false, search: false, refresh: true });
    });

在以上代码中,我们将jqGrid表格的数据源定义为/Home/GridData,通过设置datatypejson来表示返回的数据格式为JSON格式。colNamescolModel分别用于定义表格的列名和列模型。pager用于指定分页的位置,rowNum用于指定每页显示的行数,rownumbers用于显示行号,rowList用于定义每页显示行数的下拉列表,viewrecords表示是否显示总记录数,caption用于设置标题,jsonReader用于指定JSON格式的字段名和数据格式。最后,navGrid用于显示分页导航栏。

需要在后台编写代码来处理分页请求。在Controller中编写如下代码:

public JsonResult GridData(int page = 1, int rows = 10)
{
    var list = db.TestTable.ToList();
    int count = list.Count();
    int totalPages = (int)Math.Ceiling((double)count / (double)rows);
    list = list.OrderBy(a => a.ID).Skip((page - 1) * rows).Take(rows).ToList();
    var jsonData = new
    {
        total = totalPages,
        page,
        records = count,
        rows = list.Select(a => new
        {
            id = a.ID,
            cell = new object[] {
                a.ID,
                a.Name,
                a.Address
            }
        }).ToArray()
    };
    return Json(jsonData, JsonRequestBehavior.AllowGet);
}

在以上代码中,我们首先获取所有的数据,然后计算出总页数,并根据当前页和每页行数来获取当前页需要显示的数据,最后将数据组装为JSON格式,通过JsonResult返回到前台。

3. 使用jquery Datatables进行服务器端分页

首先,需要在页面中定义一个table,用于渲染jquery Datatables表格。如下所示:

<table id="tableData" class="display table" style="width: 100%">
        <thead>
            <tr>
                <th>ID</th>
                <th>名称</th>
                <th>地址</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>ID</th>
                <th>名称</th>
                <th>地址</th>
            </tr>
        </tfoot>
    </table>

然后,在页面中编写相关的JavaScript代码来初始化jquery Datatables表格,并进行服务器端分页。示例代码如下:

$(document).ready(function () {
        $("#tableData").DataTable({
            processing: true,
            serverSide: true,
            ajax: {
                url: '/Home/GetData',
                type: 'POST',
                dataType: 'json',
                data: function (d) {
                    d.page = $('#tableData').DataTable().page.info().page + 1;
                    d.rows = $('#tableData').DataTable().page.info().length;
                }
            },
            columns: [
                { data: 'ID' },
                { data: 'Name' },
                { data: 'Address' }
            ],
            paging: true,
            pagingType: 'full_numbers',
            pageLength: 20,
            lengthMenu: [[20, 30, 50], [20, 30, 50]],
            ordering: false,
            searching: false,
            info: true,
            language: {
                'lengthMenu': '每页显示 _MENU_ 条记录',
                'paginate': {
                    'first': '首页',
                    'last': '末页',
                    'next': '<i class="iconfont icon-arrowright"></i>',
                    'previous': '<i class="iconfont icon-arrowleft"></i>'
                },
                'info': '共_TOTAL_条记录,当前显示第_START_到第_END_条'
            }
        });
    });

在以上代码中,我们将jquery Datatables表格的数据源定义为/Home/GetData,通过设置processingserverSidetrue来表示开启服务器端分页。ajax用于配置服务端获取数据的方式,data用于传递分页所需的参数。columns用于定义表格的列名和列模型。pagingType用于设置分页样式,pageLength用于设置每页显示的行数,lengthMenu用于定义每页显示行数的下拉列表,ordering用于设置是否可以排序,searching表示是否可以进行搜索,info用于显示总记录数和分页信息,language用于设置表格的语言。

需要在后台编写代码来处理分页请求。在Controller中编写如下代码:

public JsonResult GetData(int draw, int start, int length)
{
    var list = db.TestTable.ToList();
    int count = list.Count();
    var data = list.Skip(start).Take(length).ToList();
    return Json(new { draw = draw, recordsTotal = count, recordsFiltered = count, data = data }, JsonRequestBehavior.AllowGet);
}

在以上代码中,我们获取所有的数据,并根据分页所需的参数来获取当前页需要显示的数据,最后将数据组装为JSON格式,通过JsonResult返回到前台。

总结

以上就是使用ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项的攻略,通过以上示例代码,我们可以很清楚地了解如何使用这两个插件进行服务器端分页。需要注意的是,由于jqGrid已经停止更新,因此建议使用jquery Datatables插件来进行表格的展示和分页。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS单标签实现复杂的棋盘布局

    CSS单标签实现复杂的棋盘布局,可以使用:before和:after伪元素来实现。 关键CSS样式如下: /* 容器样式 */ .container { display: flex; flex-wrap: wrap; width: 540px; height: 540px; margin: 0 auto; } /* 单格样式 */ .container:af…

    css 2023年6月10日
    00
  • Bootstrap每天必学之折叠

    Bootstrap每天必学之折叠 折叠是 Bootstrap 中非常实用的一个组件,它能够让页面上的内容通过二次点击等交互方式展开或隐藏。本篇就来详细讲解 Bootstrap 折叠组件的使用方法。 折叠组件的基本用法 HTML 结构 折叠组件的基础结构需要三个元素,分别是触发折叠的按钮,折叠的内容和容器元素。这里的按钮可以是一个普通按钮或者是一个链接。 以下…

    css 2023年6月10日
    00
  • JavaScript之Canvas_动力节点Java学院整理

    JavaScript之Canvas_动力节点Java学院整理 本文主要介绍如何使用Canvas创建具有动态效果的图形和动画。 Canvas介绍 Canvas是HTML5中新增的HTML元素之一,类似于画布,可以在画布上绘制各种图形、动画等。它是基于JavaScript的API实现的,可以使用js代码来操作Canvas。Canvas使用起来相对简单但也有一些坑…

    css 2023年6月10日
    00
  • CSS 即将支持嵌套,SASS/LESS 等预处理器该何去何从

    CSS 即将支持嵌套,SASS/LESS 等预处理器该何去何从 在 CSS 3 中,嵌套选择器是一种非常有用的选择器,可以让开发者更加方便地编写 CSS 样式。然而,CSS 3 中的嵌套选择器只能嵌套一层,对于复杂的嵌套结构,仍然需要使用类名或 ID 来实现。近期,CSS 工作组提出了一个新的 CSS 规范,即 CSS Nesting,该规范将支持多层嵌套选…

    css 2023年5月18日
    00
  • CSS中position属性之fixed实现div居中

    下面是详细讲解“CSS中position属性之fixed实现div居中”的完整攻略: 一、认识position属性 在介绍fixed定位居中之前,我们需要先了解一下position属性。position属性用来设置元素的定位方式,有以下几种值: static:默认排版方式,元素遵循正常文档流,不具有定位能力。一般不需要声明这个值。 relative:相对于元…

    css 2023年6月9日
    00
  • JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)

    下面是“JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)”的攻略: 实现思路 本例中,我们需要通过鼠标事件监听和CSS动画实现,实现当鼠标经过一个元素时,弹出一个DIV框,并带有缓冲动画渐变效果。具体的实现步骤如下: 使用CSS定义一个弹出DIV框,并设置其初始状态为不可见。 监听需要触发弹出的元素的鼠标移入事件,并在事件处理函数中,使…

    css 2023年6月10日
    00
  • CSS控制文字在一条线中间的方法

    应用 CSS 控制文字在一条线中间的方法,可以使得页面元素的样式更加美观统一。其实在实现过程中,有多种不同的方法,下面给出两条示例说明。 方法一:使用 line-height 属性 line-height 属性用于设置行高,通过计算行高与字体大小之间的差值,可以实现让文字在一条线中间对齐的效果。 p { font-size: 16px; line-heigh…

    css 2023年6月10日
    00
  • 通过css3动画和opacity透明度实现呼吸灯效果

    以css3动画和opacity透明度实现呼吸灯效果的完整攻略如下: 1. 准备工作 在开始使用CSS3动画和opacity透明度实现呼吸灯效果前,需要进行一些准备工作,包括CSS代码的编写和HTML文件的准备。一般步骤是: 在HTML文件中创建一个需要实现呼吸灯效果的元素,例如一个div或者一张图片; 为该元素设置CSS样式,确定元素的位置、大小、背景颜色等…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部