第10章 角色页的分页、排序、查询实现

news2024/11/15 16:51:43

1 重构WebApi.Controllers.RoleController. PostRolePageByFromBodyAsync

  //把所有符合条件的角色实例,按照指定字段进行排序操作。

            if (!string.IsNullOrEmpty(pagination.OrderByFiled))

            {

                var _obj = JsonConvert.DeserializeAnonymousType(pagination.OrderByFiled, new

                {

                    Filed = "",

                    Type = "",

                });

                if (_obj!.Type == null)

                {

                    _roleQueryable = _roleQueryable.OrderByDescending(r => r.Id);

                }

                else if (_obj.Type!.Equals("ascending", StringComparison.InvariantCultureIgnoreCase))

                {

                    _roleQueryable = _roleQueryable.OrderBy(_obj!.Filed);

                }

                else if (_obj.Type!.Equals("descending", StringComparison.InvariantCultureIgnoreCase))

                {

                    _roleQueryable = _roleQueryable.OrderByDescending(_obj!.Filed);

                }

            }

            else

            {

                _roleQueryable = _roleQueryable.OrderBy(r => r.Id);

            }

2角色页的分页、排序、查询实现

<template>

    <!-- 查询表单 -->

    <el-form :model="formQuery" ref="ruleFormRef" label-width="120px" label-position="left"

        class="demo-form-inline">

        <el-row :gutter="20">

            <el-col :span="7">

                <el-form-item label="名称:">

                    <el-input v-model="formQuery.name" type="text" auto-complete="off" />

                </el-form-item>

            </el-col>

            <el-col :span="7">

                <el-form-item label="状态:">

                    <el-select v-model="formQuery.isActive">

                        <el-option label="不限" value="" />

                        <el-option label="启用" value=true />

                        <el-option label="禁用" value=false />

                    </el-select>

                </el-form-item>

            </el-col>

            <el-col :span="2">

                <el-form-item>

                    <el-button type="primary" size="large" @click="submitQuery">

                        <el-icon style="margin-right:5px; font-size: 22px;">

                            <Search/>

                        </el-icon>

                       

                    </el-button>

                </el-form-item>

            </el-col>

            <el-col :span="2">

                <el-form-item>

                    <el-button type="info" size="large" @click="resertTable">

                        <el-icon style="margin-right:5px; font-size: 22px;">

                            <RefreshRight />

                        </el-icon>

                       

                    </el-button>

                </el-form-item>

            </el-col>

            <el-col :span="2">

                <el-form-item>

                    <el-button type="danger" size="large">

                        <el-icon style="margin-right:5px; font-size: 22px;">

                            <Delete/>

                        </el-icon>

                        删除所选

                    </el-button>

                </el-form-item>

            </el-col>

        </el-row>

    </el-form>

    <!-- 指定页面 -->

    <el-table :data="rolePageList" style="width: 100%" :row-style="{height:'30px'}" @sort-change="handleTableSort"

        :default-sort="{'prop': JSON.parse(this.pagination.OrderByFiled).filed,'order':JSON.parse(this.pagination.OrderByFiled).type}"

        ref="refTable">

        <el-table-column type="selection" width="50px" />

        <el-table-column property="id" label="编号" width="100px" sortable />

        <el-table-column property="name" label="名称" sortable />

        <el-table-column prop="isActive" label="启用?" width="200">

            <template #default="scope">

                <el-tag type="success" size="large" v-if="scope.row.isActive"> </el-tag>

                <el-tag type="danger" v-else> </el-tag>

            </template>

        </el-table-column>

        <el-table-column property="remark" label="备注" />

        <el-table-column label="操作" align="center">

            <template #default="scope">

                <el-button type="primary" @click="handleEdit(scope.$index, scope.row)" size="large"

                    style="margin-right: 10px;"> </el-button>

                <el-button type="danger" @click="handleDelete(scope.$index, scope.row)" size="large"> </el-button>

            </template>

        </el-table-column>

    </el-table>

    <!--  “->”设定 “el-pagination”分页组件靠右显示。 -->

    <el-pagination v-model:current-page="this.pagination.pageIndex" v-model:page-size="this.pagination.pageSize"

        :page-sizes="[5, 10, 15, 20, 50]" :total="this.pagination.totalCount" prev-text="上一页" next-text="下一页" background

        layout="->, total, sizes, prev, pager, next" @size-change="handleSizeChange"

        @current-change="handleCurrentChange" />

</template>

<script>

    import axios from 'axios'

    export default ({

        data() {

            return {

                //该实例用于指示,当前页面是否正在调用后端的API方法,获取当前页面渲染显示所需的数据源。

                listLoading: false,

                formQuery: {

                    name: '',

                    isActive: '',

                },

                //初始化当前页的渲染数据集列表实例。

                rolePageList: [],

                //分页初始化实例。

                pagination: {

                    pageIndex: 1, //初始化当前页,即第1页。

                    pageSize: 15, //初始化每页最多所包含的项数值,即每页最多所包含15项。

                    totalCount: 0, //初始化数据源的总计项数值,由于还没有加载数据源所以该值为:0

                    //初始化排序字段及其方式。

                    OrderByFiled: JSON.stringify({

                        filed: 'id',

                        type: 'descending',

                    }),

                    QueryCondition: ""

                },

            };

        },

        methods: {

            //获取当前页面渲染显示所需的数据源。

            async getRolePageList() {

                this.listLoading = true;

                //"axios.post"方式没有加载“headers”参数实例,需要在后端进行相应的配置,否则访问后端的POST-API,否则会出现:"HTTP:415"错误。

                let res = await axios.post('https://localhost:7043/Role/PostRolePageByFromBody', JSON.stringify(

                    this.pagination));

                //console.log(res.data);

                this.pagination.totalCount = res.data.response.totalCount;

                this.rolePageList = res.data.response.data;

                this.listLoading = false;

            },

            //该事件在改变每页最多所包含的项数值后,把数据源加载到当前页面中,并重新对当前页进行渲染显示。

            async handleSizeChange(size) {

                this.pagination.pagesize = size;

                //console.log(this.pagesize); //每页最多所包含的项数值。

                await this.getRolePageList();

            },

            //该事件在改变当前页的索引值后,把数据源加载到当前页面中,并重新对当前页进行渲染显示。

            async handleCurrentChange(currentPage) {

                this.pagination.PageIndex = currentPage;

                //console.log(this.PageIndex); //当前页的索引值。

                await this.getRolePageList();

            },

            // 点击三角图标时触发事件

            async handleTableSort({

                column

            }) {

                /* console.log(JSON.stringify({

                     filed: column.property,

                     type: column.order,

                 })); */

                this.pagination.OrderByFiled = JSON.stringify({

                    filed: column.property,

                    type: column.order,

                });

                await this.getRolePageList();

            },

            //重置页面样式及其数据。

            async resertTable() {

                //重置查询表单。

                this.formQuery = {

                    name: '',

                    isActive: '',

                };

                //重置排序字段试及其排序方式。

                this.pagination = {

                    pageIndex: 1, //初始化当前页,即第1页。

                    pageSize: 15, //初始化每页最多所包含的项数值,即每页最多所包含15项。

                    totalCount: 0, //初始化数据源的总计项数值,由于还没有加载数据源所以该值为:0

                    //初始化排序字段及其方式。

                    OrderByFiled: JSON.stringify({

                        filed: 'id',

                        type: 'descending',

                    }),

                    QueryCondition: ""

                }

                await this.$refs.refTable.sort(JSON.parse(this.pagination.OrderByFiled).filed, JSON.parse(this

                    .pagination.OrderByFiled).type);

                await this.getRolePageList();

            },

            //查询操作。

            async submitQuery() {

                var where = {};

                if (this.formQuery.name != '') {

                    where.name = this.formQuery.name;

                }

                if (this.formQuery.isActive != '') {

                    where.isActive = this.formQuery.isActive;

                }

                this.pagination.QueryCondition = JSON.stringify(where);

                await this.getRolePageList();

            },

        },

        async mounted() {

            await this.getRolePageList();

        }

    });

</script>

<style scoped lang="scss">

    //表单“label”字体样式

    :deep(.el-form-item__label) {

        font-size: 120%;

        font-weight: 700;

    }

    // 修改表头样式。

    :deep(.el-table__header thead th) {

        background-color: #000000;

        color: #ffd04b;

        font-size: 150%;

        font-weight: 700;

        text-align: center;

    }

    //修改复选框控件样式。

    :deep(.el-checkbox) {

        display: flex;

        align-items: center;

        width: 25px;

        height: 25px;

        //修改选中框的大小

        .el-checkbox__inner {

            width: 20px;

            height: 20px;

            border: #409EFF solid 2px;

            //修改选中框中的对勾的大小和位置

            &::after {

                // 对号

                border: 4px solid #FFFFFF;

                // 不覆盖下面的 导致对号变形

                box-sizing: content-box;

                content: "";

                border-left: 0;

                border-top: 0;

                height: 15px;

                position: absolute;

                top: -3px;

            }

        }

        //修改点击文字颜色不变

        .el-checkbox__input.is-checked+.el-checkbox__label {

            color: #333333;

        }

        .el-checkbox__label {

            line-height: 25px;

            //padding-left: 8px;

        }

    }

    //表格隔行变换颜色。

    :deep(.el-table__body tbody tr:nth-child(odd)) {

        background-color: #FFFFFF;

        font-size: 120%;

        font-weight: 700;

    }

    :deep(.el-table__body tbody tr:nth-child(even) td) {

        background-color: #CCFFFF;

        font-size: 120%;

        font-weight: 700;

    }

    //标签控件字体样式。

    .el-tag {

        font-size: 100%;

        font-weight: 700;

    }

    //按钮控件字体样式。

    .el-button {

        font-size: 100%;

        font-weight: 700;

    }

    //“el-pagination”分页组件样式。

    .el-pagination {

        margin-top: 10px;

        font-size: 25px;

        //"上一页"样式。

        :deep(.btn-prev) {

            background-color: transparent;

            width: 40px;

            height: 40px;

            margin-right: 20px;

            font-size: 25px;

        }

        //"下一页"样式。

        :deep(.btn-next) {

            background-color: transparent;

            width: 40px;

            height: 40px;

            margin-left: 20px;

            font-size: 25px;

        }

        //分页索引样式。

        :deep(.number) {

            background-color: transparent;

            width: 40px;

            height: 40px;

            margin-right: 15px;

            font-size: 25px;

        }

    }

    //“el-pagination”分页组件中下拉框控件字体样式。

    :deep(.el-input__wrapper) {

        font-size: 25px;

    }

</style>

对以上功能更为具体实现和注释见:230101_005shopvue(角色页的分页、排序、查询实现)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 2351. 第一个出现两次的字母

题目 给你一个由小写英文字母组成的字符串 s &#xff0c;请你找出并返回第一个出现 两次 的字母。 注意&#xff1a; 如果 a 的 第二次 出现比 b 的 第二次 出现在字符串中的位置更靠前&#xff0c;则认为字母 a 在字母 b 之前出现两次。 s 包含至少一个出现两次的字母。 …

TopK问题的必会解法

目录经典解法&#xff0c;创建K个大小的堆不考虑空间的暴力排序做法不考虑空间的快排partition变形减治法思想(核心&#xff1a;找第K大的数)空间有限放不下&#xff0c;海量数据的分治法经典解法&#xff0c;创建K个大小的堆 传统的直接建立一个K个元素的小顶堆&#xff0c;类…

推荐两款可以将图片无损放大的在线工具

文章目录一、waifu2x网站预览传送地址二、BigJPG网站预览传送地址好不容易找到合适的图片素材但尺寸太小&#xff1f;那这里的工具正好适合你&#xff0c;能把你的小图放大几倍都不模糊。 一、waifu2x 本程序使用卷积神经网络对动漫风格的图片进行放大操作&#xff08;支持照…

再聊一下那 SQLSERVER 行不能跨页的事

一&#xff1a;背景 1. 讲故事 上一篇写完了之后&#xff0c;马上就有朋友留言对记录行的 8060byte 限制的疑惑&#xff0c;因为他的表记录存储了大量的文章&#xff0c;存储文章的字段类型用的是 nvarchar(max)&#xff0c;长度很显然是超过 8060byte 的&#xff0c;请问这个…

win10搭建 IIS 服务器

第一步: 打开程序和功能 找到 Internet 这个 勾选web管理工具和万维网服务 第二步: 在本地电脑创建一个文件夹(不要有中文空格等特殊字符) index.html 是默认访问的网址 第三步 关联访问的链接 选择本地物理路径 访问测试 第四步 修改绑定端口 第五步 修改防火墙 …

Linux | 文件操作的系统调用 open() read() write()

1. 基本含义辨析 文件操作的系统调用 open read write close &#xff08;系统调用&#xff1a;实现在内核中【用户态->内核态】—“陷入内核”&#xff09; man&#xff1a; 1 命令 2 系统调用 3 库函数 C操作文件的库函数 fopen fread fwrite fclose &#xff08;fo…

一个有意思的图片鼠标切换

做淘宝活动页面的时候&#xff0c;用到最多的就是锚点&#xff0c;一个图片标签&#xff0c;然后不断地在上面画热区。不过我想问的是有多少人研究过&#xff0c;用矩形画热点&#xff0c;四个坐标值各自表示的含义&#xff0c;还有它和background-position有什么相同或相似的地…

JavaWeb:RequestResponse的概述

1&#xff0c;Request和Response的概述 Request是请求对象&#xff0c;Response是响应对象。 这两个对象在我们使用Servlet的时候有看到&#xff1a; 此时&#xff0c;我们就需要思考一个问题request和response这两个参数的作用是什么&#xff1f; request&#xff1a;获取请…

RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记

1. 引言 前序博客有&#xff1a; PLOOKUPPLOOKUP代码解析Efficient polynomial commitment schemes for multiple points and polynomials学习笔记PLONK PLOOKUPPlonKup: Reconciling PlonK with plookupPLONK: permutations over lagrange-bases for oecumenical nonintera…

2022年就要过去了,我的这份成绩单请您查收……

喜迎元旦岁月不居&#xff0c;时节如流年关交迭在即在2022行将尾声的此时想静静地坐下片刻和关注了云和恩墨这么久的老朋友们细数一遍这光阴里的纷纷呈呈这一年&#xff0c;充满了挑战与艰辛但所有努力和守望终有结果收成这一年&#xff0c;我们全心投入产品研发收获了更多的荣…

【隔离器使用说明】光隔、磁隔、容隔三兄弟介绍

文章目录前言一、三种常用隔离技术1. 光隔离2. 变压器隔离/磁隔3. 电容隔离二、隔离器重要指标1. 隔离电压值2. 爬电距离3. 共模瞬变抗扰度CMTI三、隔离器性能对比总结前言 本文简单介绍常用隔离器的类型和特点&#xff0c;是根据网络知识整理出来的 有错误的话请一定评论留言…

谈谈SpringBoot

1. Spring Boot 简介 简化Spring应用开发的一个框架&#xff1b; 整个Spring技术栈的一个大整合&#xff1b; J2EE开发的一站式解决方案&#xff1b; 2. HelloWorld 功能&#xff1a;浏览器发送hello请求&#xff0c;服务器接受请求并处理&#xff0c;响应Hello World字符串&a…

UE5笔记【十五】漂流者游戏制作【二】雕刻一个峡谷+增加水体

雕刻峡谷 我们希望角色从一个峡谷中开始。 用上一节中&#xff0c;我们配置的Auto图层&#xff0c;雕刻两条山脉&#xff0c;从而雕刻出一条峡谷。然后切换到选择模式下。我们找到PlayStart&#xff0c;然后将其移动到峡谷中&#xff0c; 然后按F切换到角色位置&#xff0c;调…

【C++基础】09:STL(一)

STL&#xff08;一&#xff09; OVERVIEWSTL&#xff08;一&#xff09;一、STL初识1.STL六大组件&#xff1a;2.容器&迭代器&#xff1a;二、STLGroup11.string容器&#xff1a;&#xff08;1&#xff09;基本概念&#xff1a;&#xff08;2&#xff09;string构造函数&am…

前端性能优化(三):代码优化

目录 一&#xff1a;JS开销以及如何缩短解析时间 二&#xff1a;配合V8有效优化代码 2.1.抽象语法树 2.2.V8优化机制 三&#xff1a;函数优化 四&#xff1a;对象优化 4.1.以相同顺序初始化对象成员&#xff0c;避免隐藏类的调整 4.2.实例化后避免添加新属性 4.3.尽量…

数学建模经验分享

今天给大家分享一期关于数学建模比赛的经验分享&#xff0c;我将从以下三个方面展开说明&#xff1a; &#xff08;1&#xff09;如何准备数学建模比赛&#xff1f; &#xff08;2&#xff09;如何选择合适的赛题进行建模&#xff1f; &#xff08;3&#xff09;如何提高获奖…

辉哥带你学hive第三讲

文章目录 1.函数1.1系统内置函数1.2 单行函数1.2.1 算术运算函数1.2.2字符串函数1.2.3 日期函数1.2.4 流程控制函数1.2.5集合函数1.3高级聚合函数1.函数 1.1系统内置函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function up…

机器学习HW10对抗性攻击

机器学习HW10对抗性攻击一、任务描述二、算法1、FGSM2、I-FGSM3、MI-FGSM4、多种输入&#xff08;DIM&#xff09;评估指标三、实验1、Simple Baseline2、Medium Baseline3、Strong Baseline4、Boss Baseline一、任务描述 我们使用pytorchcv来获得CIFAR-10预训练模型&#xff…

STP基础

名词&#xff1a; STP&#xff08;Spanning Tree Protocol&#xff09;生成树协议&#xff1a;运行STP协议的设备通过彼此交互信息发现网络中的环路&#xff0c;并有选择地对某个接口进行阻塞&#xff0c;最终将有环路的网络结构修剪成无环路的树形结构&#xff0c;从而防止报…

ENVI_IDL:对于书写和创建GEOTIFF结构体?

大家在使用WRITE_TIFF函数和READ_TIFF函数的时候&#xff0c;应该遇见过GEOTIFF参数。 但是我对于这个参数却是了解不深&#xff0c;趁着这次学习梳理一下GEOTIFF参数. 在学习之前&#xff0c;我发现IDL教程并没有提供关于GEOTIFF的示例&#xff0c;所以我尝试使用READ_TIFF函…