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

yizhihongxing

下面是“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日

相关文章

  • HTML5 canvas 基本语法

    下面是关于HTML5 canvas基本语法的攻略,希望对您有所帮助。 HTML5 canvas简介 HTML5中的canvas可以让我们通过JavaScript在网页上绘制二维图形。我们可以在canvas中画线、圆形、矩形、三角形等基本形状。此外,我们也可以在canvas中添加图片和文字,实现丰富的视觉效果。 HTML5 canvas基本语法 要使用canv…

    css 2023年6月10日
    00
  • 详解css3使用transform出现字体模糊的解决办法

    下面是详解CSS3使用transform出现字体模糊的解决办法的完整攻略。 问题描述 在使用CSS3的transform属性对元素进行动画效果处理时,有时候会出现字体模糊的情况,这会影响页面的美观度和用户体验,需要解决这个问题。 解决方案 出现字体模糊的原因是,使用transform属性对元素进行动画处理时,会把元素进行一定的变形,因此容易导致浏览器难以渲染…

    css 2023年6月9日
    00
  • CSS是什么?

    CSS(Cascading Style Sheets)是一种用于描述HTML或XML(包括XHTML)等文件样式和布局的语言。 CSS的主要作用是将内容的展示和样式进行分离,使网页开发变得更为简便、灵活和易于维护。CSS使用选择器(Selectors)、属性(Properties)和值(Values)定义样式规则,同时支持层叠、继承和优先级。 CSS的基本语…

    2023年3月16日
    00
  • Reactjs 错误边界优雅处理方法demo

    Reactjs 错误边界是ReactJS 16一个新的特性。它可以让我们在组件内部,通过生命周期函数来捕获JavaScript错误。错误边界能够捕获组件树内一个未被捕获的JavaScript异常,并且在渲染发生错误时,提供优雅的兜底方案,而不是整个组件树崩溃。 创建错误边界 创建错误边界非常简单,只需创建一个类实现 componentDidCatch 方法即…

    css 2023年6月10日
    00
  • js实现动态添加、删除行、onkeyup表格求和示例

    下面是关于js实现动态添加、删除行、onkeyup表格求和的完整攻略。 1. 理解需求及思路 首先需要明确的是,我们要实现的功能主要有三个:动态添加行、动态删除行以及表格数据的求和。基于这些需求,我们可以制定以下的实现思路: 定义一个数组,用于存储表格数据; 使用DOM操作创建表格,并将表格数据导入数组; 为添加按钮绑定事件,以动态添加表格行; 为删除按钮绑…

    css 2023年6月10日
    00
  • HTML5时代CSS设置漂亮字体取代图片

    HTML5时代,我们可以使用CSS来设置漂亮字体,而无需依赖图片。以下是完整的攻略: 1. 指定所需字体 首先,我们需要在CSS文件中指定要使用的字体。为了确保字体在用户的计算机上可用,我们需要提供一个备用选项。可以使用以下示例代码来设置字体: body { font-family: ‘Open Sans’, Arial, sans-serif; } 在这个…

    css 2023年6月9日
    00
  • 我的css框架——base.css(重设浏览器默认样式)

    第一步:创建项目文件夹 在本地的文件夹中新建一个文件夹,该文件夹为该项目的文件夹,文件夹名称可以自行命名。在该文件夹中新建两个文件夹,一个为css文件夹,另一个为img文件夹。 第二步:创建base.css文件 在css文件夹中创建base.css文件,并编写基本的代码,如下所示: /* 重设浏览器默认样式 */ /* 通用样式 */ html { box-…

    css 2023年6月9日
    00
  • 详解CSS3新增的背景属性

    来详细讲解一下CSS3新增的背景属性的完整攻略。 背景属性 在CSS3中,我们新增了很多有用的背景属性,包括 background-clip、background-origin、background-size 等。接下来我会对这些属性依次进行介绍。 background-clip background-clip 控制背景图片的绘制区域。默认情况下,背景图片会…

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