MVC框架中分頁的實現

分頁查詢顯示

數據庫

USE [master]
GO
/****** Object:  Database [RbacDB]    Script Date: 2020/6/2 23:51:00 ******/
CREATE DATABASE [RbacDB]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'RbacDB', FILENAME = N'F:\在線課程\第4節課-權限管理(簡單)\database\RbacDB.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'RbacDB_log', FILENAME = N'F:\在線課程\第4節課-權限管理(簡單)\database\RbacDB_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO
ALTER DATABASE [RbacDB] SET COMPATIBILITY_LEVEL = 140
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [RbacDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [RbacDB] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [RbacDB] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [RbacDB] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [RbacDB] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [RbacDB] SET ARITHABORT OFF 
GO
ALTER DATABASE [RbacDB] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [RbacDB] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [RbacDB] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [RbacDB] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [RbacDB] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [RbacDB] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [RbacDB] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [RbacDB] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [RbacDB] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [RbacDB] SET  DISABLE_BROKER 
GO
ALTER DATABASE [RbacDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [RbacDB] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [RbacDB] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [RbacDB] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [RbacDB] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [RbacDB] SET READ_COMMITTED_SNAPSHOT OFF 
GO
ALTER DATABASE [RbacDB] SET HONOR_BROKER_PRIORITY OFF 
GO
ALTER DATABASE [RbacDB] SET RECOVERY FULL 
GO
ALTER DATABASE [RbacDB] SET  MULTI_USER 
GO
ALTER DATABASE [RbacDB] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [RbacDB] SET DB_CHAINING OFF 
GO
ALTER DATABASE [RbacDB] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
GO
ALTER DATABASE [RbacDB] SET TARGET_RECOVERY_TIME = 60 SECONDS 
GO
ALTER DATABASE [RbacDB] SET DELAYED_DURABILITY = DISABLED 
GO
EXEC sys.sp_db_vardecimal_storage_format N'RbacDB', N'ON'
GO
ALTER DATABASE [RbacDB] SET QUERY_STORE = OFF
GO
USE [RbacDB]
GO
/****** Object:  Table [dbo].[Permissions]    Script Date: 2020/6/2 23:51:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Permissions](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Url] [nvarchar](50) NULL,
	[Remark] [nvarchar](50) NULL,
 CONSTRAINT [PK_Menus] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[RolePermissions]    Script Date: 2020/6/2 23:51:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[RolePermissions](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[RoleID] [int] NULL,
	[PermissionID] [int] NULL,
 CONSTRAINT [PK_R_Role_Menus] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Roles]    Script Date: 2020/6/2 23:51:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Roles](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Remark] [nvarchar](50) NULL,
 CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[UserInfos]    Script Date: 2020/6/2 23:51:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[UserInfos](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[RoleID] [int] NULL,
	[Account] [nvarchar](50) NULL,
	[Pwd] [nvarchar](50) NULL,
	[Sex] [bit] NULL,
	[Hobby] [nvarchar](100) NULL,
	[Photo] [nvarchar](100) NULL,
	[Remark] [nvarchar](50) NULL,
 CONSTRAINT [PK_UserInfos] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Permissions] ON 

INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (2, N'用戶管理', N'/userinfo/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (14, N'角色管理', N'/role/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (17, N'權限管理', N'/permission/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (22, N'教師管理', N'/teacher/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (23, N'班級管理', N'/classInfo/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (24, N'學生管理', N'/student/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (38, N'題庫管理', N'/question/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (46, N'班級考試', N'/ClassInfoTestInfo/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (49, N'我的考試', N'/studenttestInfo/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (55, N'部門管理', N'/Department/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (56, N'給角色設置權限', N'/RolePermission/index', NULL)
INSERT [dbo].[Permissions] ([ID], [Name], [Url], [Remark]) VALUES (57, N'測試', N'/test/index', NULL)
SET IDENTITY_INSERT [dbo].[Permissions] OFF
SET IDENTITY_INSERT [dbo].[RolePermissions] ON 

INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (516, 3, 23)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (517, 3, 24)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (518, 4, 38)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (519, 4, 46)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (535, 1, 2)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (536, 1, 14)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (537, 1, 17)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (538, 1, 22)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (539, 1, 23)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (540, 1, 24)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (541, 1, 38)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (542, 1, 46)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (543, 1, 55)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (544, 1, 56)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (552, 5, 49)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (553, 2, 22)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (554, 2, 23)
INSERT [dbo].[RolePermissions] ([ID], [RoleID], [PermissionID]) VALUES (555, 2, 38)
SET IDENTITY_INSERT [dbo].[RolePermissions] OFF
SET IDENTITY_INSERT [dbo].[Roles] ON 

INSERT [dbo].[Roles] ([ID], [Name], [Remark]) VALUES (1, N'系統管理員', NULL)
INSERT [dbo].[Roles] ([ID], [Name], [Remark]) VALUES (2, N'人事主任', NULL)
INSERT [dbo].[Roles] ([ID], [Name], [Remark]) VALUES (3, N'教務主任', NULL)
INSERT [dbo].[Roles] ([ID], [Name], [Remark]) VALUES (4, N'教師', NULL)
INSERT [dbo].[Roles] ([ID], [Name], [Remark]) VALUES (5, N'學生', NULL)
SET IDENTITY_INSERT [dbo].[Roles] OFF
SET IDENTITY_INSERT [dbo].[UserInfos] ON 

INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (3, N'學院信息中心-彭主任', 1, N'admin', N'admin', 1, N'籃球,羽毛球', N'1.jpg', NULL)
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (10, N'學院人事處-尹主任', 2, N'yin', N'123', 1, N'游泳', N'2.jpg', N'很好')
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (12, N'學院教務處-李主任', 3, N'li', N'123', 0, N'跳舞', N'3.jpg', NULL)
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (14, N'胡瑤老師', 4, N'huyao', N'123', 0, N'跳舞', N'4.jpg', NULL)
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (15, N'韓冬敏老師', 4, N'handm', N'123', 0, N'唱歌', N'1.jpg', N'很靠譜')
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (20, N'全園園同學', 5, N'qyy', N'123', 0, N'健身', N'2.jpg', NULL)
INSERT [dbo].[UserInfos] ([ID], [Name], [RoleID], [Account], [Pwd], [Sex], [Hobby], [Photo], [Remark]) VALUES (21, N'易紫瑩同學', 5, N'yizy', N'123', 0, N'演講', N'3.jpg', NULL)
SET IDENTITY_INSERT [dbo].[UserInfos] OFF
ALTER TABLE [dbo].[RolePermissions]  WITH CHECK ADD  CONSTRAINT [FK_Role_Permissions_Permissions] FOREIGN KEY([PermissionID])
REFERENCES [dbo].[Permissions] ([ID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[RolePermissions] CHECK CONSTRAINT [FK_Role_Permissions_Permissions]
GO
ALTER TABLE [dbo].[RolePermissions]  WITH CHECK ADD  CONSTRAINT [FK_Role_Permissions_Roles] FOREIGN KEY([RoleID])
REFERENCES [dbo].[Roles] ([ID])
GO
ALTER TABLE [dbo].[RolePermissions] CHECK CONSTRAINT [FK_Role_Permissions_Roles]
GO
ALTER TABLE [dbo].[UserInfos]  WITH CHECK ADD  CONSTRAINT [FK_UserInfos_Roles] FOREIGN KEY([RoleID])
REFERENCES [dbo].[Roles] ([ID])
GO
ALTER TABLE [dbo].[UserInfos] CHECK CONSTRAINT [FK_UserInfos_Roles]
GO
/****** Object:  StoredProcedure [dbo].[cp_testClass_select_byTestID]    Script Date: 2020/6/2 23:51:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[cp_testClass_select_byTestID]
(
    @testID int
)
as 
select c.ID as ClassInfoID,c.Name as ClassInfoName,ct.ID,ct.TestID,ct.Status,ct.StartTime,ct.EndTime,ct.Remark from  ClassInfos c left join (select * from Test_ClassInfos where TestID= @testID) ct
on c.ID=ct.ClassInfoID
GO
USE [master]
GO
ALTER DATABASE [RbacDB] SET  READ_WRITE 
GO

控制器

 public ActionResult Index(int pageIndex=1,int pageSize=10,string name="")
        {
            //獲取總記錄數
            var totalRows = db.Roles.Count();
            //計算總頁數
            var totalPages = Math.Ceiling(totalRows * 1.00 / pageSize);
            ViewBag.totalPages = totalPages;

            var roles = db.Roles.Where(p=>p.Name.Contains(name))
                .OrderBy(p=>p.ID)  //排序
                .Skip((pageIndex-1) * pageSize)    //跳過
                .Take(pageSize)   //取
                .ToList();
            ViewBag.pageIndex = pageIndex;
            ViewBag.name = name;
            ViewBag.pageSize = pageSize;
            return View(roles);
        }

視圖

@{
    ViewBag.Title = "Index";
}
<h2>全圓園 666</h2>
<div class="input-group">
    <label>名稱:</label>
    <input type="text" class="form-control" id="txtCondName" value="@ViewBag.name"/>
    <input type="button" id="btnSearch" value="搜索" onclick="page(1);" />
</div>
<table class="table table-bordered">
    <thead>
        <tr>
            <th>編號</th>
            <th>名稱</th>
            <th>備註</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <th>@item.ID</th>
                <th>@item.Name</th>
                <th>@item.Remark</th>
            </tr>
        }
    </tbody>
</table>
<nav aria-label="...">
    <ul class="pagination">
        <li class="page-item ">
            共 @ViewBag.totalPages 頁,第
            <input type="number" min="1" max="@ViewBag.totalPages" id="pageIndex" value="@ViewBag.pageIndex" />
            頁,每頁顯示
            <select id="pageSize" onchange="page(1);">
                @{
                    var listPageSize = new List<int> { 5, 10, 20, 50, 100 };
                }
                @foreach (var item in listPageSize)
                {
                    if (@ViewBag.pageSize == @item)
                    {
                        <option value="@item" selected="selected">@item</option>
                    }
                    else
                    {
                        <option value="@item">@item</option>
                    }
                }
            </select>
            條
        </li>
    </ul>
    <ul class="pagination">
        <li class="page-item ">
            <a class="page-link" href="javascript:page(1);" tabindex="-1" aria-disabled="true">首頁</a>
        </li>
        @if (@ViewBag.pageIndex > 1)
        {
            <li class="page-item"><a class="page-link" href="javascript:page(@ViewBag.pageIndex-1);">上頁</a></li>
        }
        else
        {
            <li class="page-item disabled"><a class="page-link" href="javascript:page(@ViewBag.pageIndex-1);">上頁</a></li>
        }
        <li class="page-item " aria-current="page">
            <span class="page-link"> @ViewBag.pageIndex</span>
        </li>
               @if (@ViewBag.pageIndex < @ViewBag.totalPages)
        {
            <li class="page-item " aria-current="page">
                <a class="page-link" href="javascript:page(@ViewBag.pageIndex+1);">下頁 </a>
            </li>
        }
        else
        {
            <li class="page-item disabled" aria-current="page">
                <a class="page-link" href="javascript:page(@ViewBag.pageIndex+1);">下頁 </a>
            </li>
        }
        <li class="page-item">
            <a class="page-link" href="javascript:page(@ViewBag.totalPages);">末頁</a>
        </li>
        <li class="page-item">
            <input type="button" class="page-link" value="GO" onclick="go()" />
        </li>
    </ul>
</nav>
@section scripts{
    <script>
        function page(pageIndex) {
            var name = $("#txtCondName").val(); //獲取搜索框的值
            var pageSize = $("#pageSize").val(); //獲取下拉框的值

            window.location.href = "/role/index?pageindex=" + pageIndex
                + "&pageSize=" + pageSize + "&name=" + name;
        }
        function go() {
            //獲取輸入的頁碼的值
            var pageIndex = $("#pageIndex").val();
            page(pageIndex);
        }
    </script>
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章