ABP进阶教程1 - 条件查询
添加实体
打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象
添加一个枚举StatusCode.cs //状态信息
using System;
using System.Collections.Generic;
using System.Text; namespace JD.CRS.Entitys
{
public enum StatusCode : byte
{
Enabled = ,
Disabled =
}
}
添加数据传输对象
打开应用层(即JD.CRS.Application)的Course\Dto目录 //用以存放Course相关数据传输对象
添加一个Dto GetAllCoursesInput.cs
using Abp.Application.Services.Dto;
using JD.CRS.Entitys; namespace JD.CRS.Course.Dto
{
public class GetAllCoursesInput: PagedResultRequestDto
{
public StatusCode? Status { get; set; }
}
}
更新应用服务
打开应用层(即JD.CRS.Application)的Course\CourseAppService.cs //Course应用服务
重写GetAll方法 //按状态查询Course
public override async Task<PagedResultDto<CourseDto>> GetAll(GetAllCoursesInput input)
{
var query = base.CreateFilteredQuery(input).WhereIf(input.Status.HasValue, t => t.Status == input.Status.Value);
var coursecount = query.Count();
var courselist = query.ToList();
return new PagedResultDto<CourseDto>()
{
TotalCount = coursecount,
Items = ObjectMapper.Map<List<CourseDto>>(courselist)
};
}
更新模型
打开展示层(即JD.CRS.Web.Mvc)的Models/Course/CourseListViewModel.cs //Course查询视图模型
新增GetStatusList方法 //获取状态列表
public StatusCode? SelectedStatus { get; set; } public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
{
var list = new List<SelectListItem>
{
new SelectListItem
{
Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, "All"),
Value = "",
Selected = SelectedStatus == null
}
}; list.AddRange(Enum.GetValues(typeof(StatusCode))
.Cast<StatusCode>()
.Select(status =>
new SelectListItem
{
Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
Value = status.ToString(),
Selected = status == SelectedStatus
})
);
更新控制器
打开展示层(即JD.CRS.Web.Mvc)的Controllers/CourseController.cs //Course控制器
更新Index方法 //按状态查询Course
public async Task<ActionResult> Index(GetAllCoursesInput input)
{
IReadOnlyList<CourseDto> output = (await _courseAppService.GetAll(new GetAllCoursesInput { Status = input.Status })).Items;
var model = new CourseListViewModel(output)
{
SelectedStatus = input.Status
};
return View(model);
}
更新视图
打开展示层(即JD.CRS.Web.Mvc)的Views/Course/Index.cshtml //Course查询视图
插入查询条件 //按状态查询Course
<div class="header">
<table>
<thead>
<tr>
<th class="col-sm-1">@L("Status")</th>
<th class="col-sm-1">
@Html.DropDownListFor(
model => model.SelectedStatus,
Model.GetStatusList(LocalizationManager),
new
{
@class = "form-control",
id = "StatusCombobox"
})
</th>
<th class="col-sm-10"></th>
</tr>
</thead>
</table>
</div>
更新脚本
打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Course查询相关脚本
插入查询条件 //按状态查询Course
var _$statusCombobox = $('#StatusCombobox');
_$statusCombobox.change(function () {
location.href = '/Course?status=' + _$statusCombobox.val();
});
预览效果
ABP进阶教程1 - 条件查询的更多相关文章
- ABP进阶教程2 - 组合查询
点这里进入ABP进阶教程目录 更新数据传输对象 打开应用层(即JD.CRS.Application)的Course\Dto\GetAllCoursesInput.cs //Course数据传输对象(查 ...
- ABP进阶教程0 - 目录
ABP进阶教程 本教程主要讲解如何基于ABP实现条件查询/分页/排序/导出/打印等功能. 源码已分享: GitHub Gitee ABP进阶教程0 - 目录 ABP进阶教程1 - 条件查询 A ...
- ABP进阶教程6 - 布局配置
点这里进入ABP进阶教程目录 解读参数 l - length changing input control (左上,每页显示记录数) f - filtering input (右上,过滤条件) t - ...
- ABP进阶教程11 - 小结
点这里进入ABP进阶教程目录 效果预览 至此,ABP进阶教程的查询/分页/排序/导出/打印示例已完成,效果如下 登录 首页 办公室信息 院系信息 课程信息 教职员信息 学生信息 新增 修改 删除 查询 ...
- ABP进阶教程10 - PDF导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...
- ABP进阶教程9 - CSV导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出CSV,中文信息导出为乱码. 解决方案 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\View ...
- ABP进阶教程3 - 优化编辑
点这里进入ABP进阶教程目录 我们尝试在新增/编辑界面增加一个下拉框用来代替输入框编辑Status 添加实体 打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象添加一个类 ...
- ABP进阶教程8 - 自定义按钮
点这里进入ABP进阶教程目录 在功能按钮区增加一个自定义按钮 - Add(创建课程) 添加按钮 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views ...
- ABP进阶教程7 - 功能按钮
点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...
随机推荐
- Add a Simple Action添加简单按钮
In this lesson, you will learn how to create a Simple Action. For this purpose, a new View Controlle ...
- CAD转PDF的软件哪个比较好用?用这两个很方便
大家都知道编辑CAD图纸是需要借助CAD制图软件来进行绘制的,而且CAD制图软件很多的设计师们都在使用.但是CAD中的图纸格式为dwg格式的,不想要使用CAD软件来查看图纸的话,就需要将CAD转换成P ...
- 用IIS进行部署,发布网页,运行DEMO
因项目需要,正在学习如何部署IIS服务,并发布网站,发布以后,运行网页,具体步骤如下: 一.IIS的部署 在进行部署前,需要将一些必要的配置选好,如图: 打开选项,进行设置,将箭头部分进行勾选 在wi ...
- 简单理解Busybox下halt/poweroff/reboot实现及区别
关键词:halt/poweroff/reboot.reboot().SIGUSR1/SIGTERM/SIGUSR2等. 1. busybox下的halt/poweroff/reboot实现 通过app ...
- LInux:YUM源安装工具的配置及使用
YUM源的设置及使用 YUM工具简介 (1)YUM(Yellow dog Upadate Modifie)是改进版的 RPM 管理器,很好地解决了 RPM 软件包的依赖问题. (2)YUM 可以从很多 ...
- CodeForces - 103B(思维+dfs找环)
题意 https://vjudge.net/problem/CodeForces-103B 很久很久以前的一天,一位美男子来到海边,海上狂风大作.美男子希望在海中找到美人鱼 ,但是很不幸他只找到了章鱼 ...
- 使用python对整个网页进行截图
方法一.使用PyQt4的QtWebKit组件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- div里面的元素垂直均匀分布 按钮引发地址栏出现问号 判断一个数组是否为空 div底部居中 路由传参接受参数
一个固定高度的div的子元素 在垂直 方向上平均分布 .important-dec{ height: 121px; flex-direction: column; display: flex; jus ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第一周学习总结
201871010123-吴丽丽<面向对象程序设计 ...
- Codeforces Round #598 (Div. 3) C. Platforms Jumping 贪心或dp
C. Platforms Jumping There is a river of width n. The left bank of the river is cell 0 and the right ...