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

ASP.NET MVC与EF是常用的Web开发框架,结合jqGrid和jquery Datatables可实现良好的服务端分页效果。以下是ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项的详细攻略:

注意事项

1. 安装jqGrid和jquery Datatables插件

必须先将jqGrid和jquery Datatables插件进行安装,可以从官方网站上下载到最新版本。其中,jqGrid可以通过NuGet包管理器安装。

2. 在Controller中实现服务端分页

在Controller中实现服务端分页需要明确分页的参数,包括当前页码,每页显示数量,以及分页排序方式等。在使用EF进行数据查询时,需要使用Take()和Skip()方法对数据进行分页。示例代码如下:

public ActionResult JqGrid(int page = 1, int rows = 10, string sort = "ID", string order = "asc")
{
    var context = new DemoDbContext();

    var list = context.DemoTable.ToList();

    int totalRecord = list.Count();

    var result = list.OrderBy(sort + " " + order)
                     .Skip((page - 1) * rows)
                     .Take(rows);

    var data = new
    {
        total = (totalRecord + rows - 1) / rows,
        page = page,
        records = totalRecord,
        rows = result
    };

    return Json(data, JsonRequestBehavior.AllowGet);
}

其中,DemoDbContext为EF的上下文,DemoTable为数据表,可根据实际情况进行修改。

3. 在View中使用jqGrid和jquery Datatables

分别引入jqGrid和jquery Datatables插件的js和css文件,并通过使用$("#gridTable").jqGrid({})或$("#example").DataTable({})的方式初始化表格,在初始化参数中指定表格的URL地址、分页参数等。示例代码如下:

  • 使用jqGrid
<table id="gridTable"></table>
<div id="gridPager"></div>

<script type="text/javascript">
    $(function () {
        $("#gridTable").jqGrid({
            url: '@Url.Action("JqGrid", "Home")',
            datatype: 'json',
            sortname: 'ID',
            sortorder: 'asc',
            mtype: 'GET',
            pager: '#gridPager',
            rowNum: 10,
            rowList: [10, 20, 30],
            height: '100%',
            autowidth: true,
            viewrecords: true,
            altRows: true,
        });
    });
</script>
  • 使用jquery Datatables
<table id="example" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
            <th>Address</th>
            <th>Phone</th>
        </tr>
    </thead>
</table>

<script type="text/javascript">
    $(function () {
        $('#example').DataTable({
            "ajax": "@Url.Action("DataTable", "Home")",
            "columns": [
                { "data": "ID" },
                { "data": "Name" },
                { "data": "Age" },
                { "data": "Sex" },
                { "data": "Address" },
                { "data": "Phone" }
            ],
            "paging": true,
            "pageLength": 10
        });
    });
</script>

示例说明

示例1:使用jqGrid

以下示例展示了如何使用jqGrid实现服务端分页。在本示例中,将从数据库中读取示例数据,包括ID、名称、年龄、性别、地址和电话等信息,并通过jqGrid将数据呈现在前端页面上。

  • 在Controller中实现服务端分页
public ActionResult JqGrid(int page = 1, int rows = 10, string sort = "ID", string order = "asc")
{
    var context = new DemoDbContext();

    var list = context.Details.ToList();

    int totalRecord = list.Count();

    var result = list.OrderBy(sort + " " + order)
                     .Skip((page - 1) * rows)
                     .Take(rows);

    var data = new
    {
        total = (totalRecord + rows - 1) / rows,
        page = page,
        records = totalRecord,
        rows = result
    };

    return Json(data, JsonRequestBehavior.AllowGet);
}
  • 在View中使用jqGrid
<table id="jqGrid"></table>
<div id="jqGridPager"></div>

@section Scripts{
    <link href="~/Content/jquery.jqGrid/ui.jqgrid.css" rel="stylesheet" />
    <link href="~/Content/jquery.jqGrid/ui.jqgrid-bootstrap.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/jquery.jqGrid.js"></script>

    <script type="text/javascript">
        $(function () {
            $("#jqGrid").jqGrid({
                url: '@Url.Action("JqGrid", "Home")',
                datatype: 'json',
                colNames: ['ID', 'Name', 'Age', 'Sex', 'Address', 'Phone'],
                colModel: [
                    { name: 'ID', index: 'ID', width: 100, align: 'center', sorttype: 'int' },
                    { name: 'Name', index: 'Name', width: 100, align: 'center' },
                    { name: 'Age', index: 'Age', width: 80, align: 'center', sorttype: 'int' },
                    { name: 'Sex', index: 'Sex', width: 60, align: 'center', formatter: 'text' },
                    { name: 'Address', index: 'Address', width: 200, align: 'center', formatter: 'text' },
                    { name: 'Phone', index: 'Phone', width: 120, align: 'center', formatter: 'text' },
                ],
                pager: '#jqGridPager',
                rowNum: 10,
                rowList: [10, 20, 30],
                height: '100%',
                autowidth: true,
                viewrecords: true,
                altRows: true,
            });
        });
    </script>
}

示例2:使用jquery Datatables

以下示例展示了如何使用jquery Datatables实现服务端分页。在本示例中,将从数据库中读取示例数据,包括ID、名称、年龄、性别、地址和电话等信息,并通过jquery Datatables将数据呈现在前端页面上。

  • 在Controller中实现服务端分页
public ActionResult DataTable()
{
    var data = new
    {
        data = GetDetails()
    };

    return Json(data, JsonRequestBehavior.AllowGet);
}

private List<object[]> GetDetails(int page = 1, int length = 10, string field = "ID", string order = "asc")
{
    var context = new DemoDbContext();

    var list = context.Details.OrderBy($"{field} {order}").Skip((page - 1) * length).Take(length).ToList();

    var result = new List<object[]>();

    foreach (var detail in list)
    {
        result.Add(new object[] { detail.ID, detail.Name, detail.Age, detail.Sex, detail.Address, detail.Phone });
    }

    return result;
}
  • 在View中使用jquery Datatables
<table id="detailTable" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
            <th>Address</th>
            <th>Phone</th>
        </tr>
    </thead>
</table>

@section Scripts{
    <link href="~/Content/jquery.dataTables.min.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/jquery.dataTables.min.js"></script>

    <script type="text/javascript">
        $(function () {
            $('#detailTable').DataTable({
                "bServerSide": true,
                "sAjaxSource": '@Url.Action("DataTable", "Home")',
                "sServerMethod": "POST",
                "bProcessing": true,
                "bPaginate": true,
                "bFilter": false,
                "bSort": true,
                "bAutoWidth": true,
                "iDisplayLength": 10,
                "aaSorting": [[0, 'asc']],
                "aoColumns": [
                    { "bSortable": true },
                    { "bSortable": true },
                    { "bSortable": true },
                    { "bSortable": true },
                    { "bSortable": true },
                    { "bSortable": true }
                ]
            });
        });
    </script>
}

结语

以上就是ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项的详细攻略以及两个示例说明,可以根据实际情况进行修改和使用,期望对你有所帮助。

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

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

相关文章

  • 一篇文章带你深入了解Java基础(3)

    我来详细讲解一下“一篇文章带你深入了解Java基础(3)”这篇攻略。 标题 一篇文章带你深入了解Java基础(3) 简介 这篇文章主要介绍了Java基础的一些概念和知识点,帮助读者更深入地了解Java编程。 正文 1. 面向对象编程 Java是一种面向对象的编程语言,这意味着它可以使用对象来表示现实世界中的事物。面向对象编程有三个重要的特征:封装、继承和多态…

    other 2023年6月27日
    00
  • Spring bean对象实例化实现过程图解

    当我们在Spring框架中定义一个bean(即Java对象),Spring框架会自动实例化和管理该对象的生命周期。下面是Spring bean对象实例化的实现过程图解及说明。 加载XML配置文件:Spring框架从XML配置文件中读取bean的定义。 示例: <!– 定义一个类为EmailService的bean,并将其注入到UserControll…

    other 2023年6月26日
    00
  • 【SQL】统计所有表的行数

    【SQL】统计所有表的行数 在日常操作数据库时,有时需要统计当前数据库里面所有表的行数,这个需求可以使用SQL语句很轻松地实现。下面就让我们通过简单的SQL语句来实现这个需求。 方法一:逐一统计每张表的行数 逐一统计每张表的行数,是最直接简单的方法。我们可以使用如下的SQL语句来逐一统计每张表的行数。 SELECT table_name, table_row…

    其他 2023年3月28日
    00
  • JS中封装axios来管控api的2种方式

    在JS中,使用axios作为网络请求库是非常常见的。在实际应用中,我们需要封装axios来管理API,以便于维护和升级。这里介绍两种常见的封装axios的方式。 方式一:基于axios.create()方法 通过axios.create()方法创建一个新的axios实例,然后在这个实例中设置一些统一的请求头、请求拦截器和响应拦截器等。示例代码如下: impo…

    other 2023年6月25日
    00
  • 在Windows 下关闭21\23\25端口的方法

    在Windows系统下关闭端口有多种方法,以下是两种可行的方式: 方法一:使用Windows防火墙 步骤: 打开“控制面板” → “系统和安全” → “Windows Defender防火墙”。 点击左侧的“高级设置”。 选择“入站规则”或“出站规则”中你要关闭的端口。如要关闭21端口,可选择FTP Server(FTP 传输控制程序)一项,进行右键操作,选…

    other 2023年6月27日
    00
  • 深度理解Python中Class类、Object类、Type元类

    深度理解Python中Class类、Object类、Type元类 在 Python 中,所有的对象都是基于类(Class)创建的。Class 是一种特殊的对象,它拥有创建其他对象的能力。在本文中,我们将深入学习Python中的 Class、Object类 和 Type元类。 Class类 在 Python 中,我们可以用 Class 来定义一个新的类型,通过…

    other 2023年6月27日
    00
  • 全能vip音乐在线解析

    全能VIP音乐在线解析攻略 全能VIP音乐在线解析是一款免费的在线音乐解析工具,可以帮助用户解析各种音乐平的音乐,包括QQ音乐、网易云音乐、酷狗乐、酷我音乐等。以下是使用全能VIP音乐在线解析详细攻略: 步骤1:打开全能VIP音乐在线解析网站 首先,打开全能VIP音乐在线解析网,网址为:http://www.97yxy.com/。 (需科学上网才能访问,可参…

    other 2023年5月8日
    00
  • android延迟执行

    Android延迟执行 在 Android 应用开发中,我们可能需要在一定的时间间隔后再执行某些操作,例如延迟启动某个Activity、延迟发出网络请求等。在这种情况下,我们可以使用 Android 提供的一些延迟执行相关的 API。 Handler Android 中的 Handler 类可以用于在指定的时间后发送一条延迟消息。 Handler mHand…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部