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

yizhihongxing

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日

相关文章

  • 解决python selenium3启动不了firefox的问题

    针对”解决Python Selenium3启动不了Firefox的问题”这个问题,我可以给你提供以下完整攻略: 问题背景 在使用Python中的Selenium3来启动Firefox浏览器时,有时候会遇到无法成功启动浏览器的情况。 解决方案 一般来说,无法启动Firefox浏览器的问题主要有两种可能性: Firefox浏览器的版本与Selenium3的驱动版…

    other 2023年6月27日
    00
  • Python获取本机所有网卡ip,掩码和广播地址实例代码

    Python获取本机所有网卡IP、掩码和广播地址实例代码攻略 在Python中,我们可以使用socket模块来获取本机所有网卡的IP地址、掩码和广播地址。下面是一个完整的攻略,包含了两个示例说明。 步骤1:导入必要的模块 首先,我们需要导入socket模块来进行网络相关的操作。在Python中,socket模块提供了一些函数和常量,用于创建套接字、发送和接收…

    other 2023年7月31日
    00
  • 详解Java中的有参构造方法与无参构造方法

    详解Java中的有参构造方法与无参构造方法 Java中的构造方法可以分为无参构造和有参构造,本文将详细讲解二者的区别和用法。 什么是无参构造方法? 无参构造方法是指不需要传入参数的构造方法,也叫默认构造方法。当我们在定义一个类时,如果没有手动定义构造方法,系统会自动为我们生成一个无参构造方法。 class Demo { int i; String s; //…

    other 2023年6月26日
    00
  • 华为mate20 pro怎么卸载应用?华为mate20 pro删除应用程序教程

    以下是华为mate20 pro卸载应用的完整攻略,包含详细的步骤: 1. 打开应用管理器 在华为mate20 pro中,卸载应用的方法是通过应用管理器来进行的。因此,首先需要打开应用管理器。 你可以通过以下两种方法来打开应用管理器: 在主屏幕上,长按任何一个应用程序,等待出现应用选项,然后选择“应用管理器”。 或者,在主屏幕上,打开应用抽屉,找到并打开“设置…

    other 2023年6月25日
    00
  • 配置f5负载均衡(转)

    配置f5负载均衡(转) 负载均衡是一种用于优化网站性能和可靠性的技术。F5是负载均衡市场中的佼佼者之一,它提供了一套全面的解决方案,包括硬件、软件和云负载均衡产品。 在本篇文章中,我们将介绍如何在F5设备上配置负载均衡,以提高网站性能和可靠性。 步骤一:创建Pool 在F5设备上,您需要首先创建一个Pool对象。一个Pool是一组Web服务器,它们被视为单个…

    其他 2023年3月28日
    00
  • nsattributedstring用法

    NSAttributedString用法 NSAttributedString是iOS平台上的一个类,用来显示富文本内容,即带有各种样式的文本。NSAttributedString提供了一些API,可以对文本的各种属性进行自定义设置。 创建NSAttributedString 创建NSAttributedString可以使用以下两种方式: 1. 直接创建 N…

    其他 2023年3月28日
    00
  • android学习之intent传递数据

    当我们在Android应用程序中需要在不同组件之间传递数据时,可以使用Intent机制。下面是一个完整攻略,介绍了如何在Android应用程序中使用Intent传递数据。 步骤1:创建发送方Activity 首先,我们需要创建一个发送方Activity,Activity将向接收方Activity发送数据。以下是一个示例: public class Sende…

    other 2023年5月6日
    00
  • 关于r:使用mutate功能时遇到麻烦

    以下是关于“关于R:使用mutate功能时遇到麻烦”的完整攻略,包含两个示例。 背景 在R语言中,我们可以使用mutate()函数来创建新的变量或修改现有变量。然而,在使用mutate()函数时,我们可能会遇到一些麻烦,例如无法正确地创建新的变量或修改现有变量。那么,在R语言中,我们应该如何使用mutate()函数来创建新的变量或修改现有变量呢? 方法一:使…

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