点这里进入ABP进阶教程目录

添加实体

打开领域层(即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 - 条件查询的更多相关文章

  1. ABP进阶教程2 - 组合查询

    点这里进入ABP进阶教程目录 更新数据传输对象 打开应用层(即JD.CRS.Application)的Course\Dto\GetAllCoursesInput.cs //Course数据传输对象(查 ...

  2. ABP进阶教程0 - 目录

    ABP进阶教程 本教程主要讲解如何基于ABP实现条件查询/分页/排序/导出/打印等功能. 源码已分享:   GitHub   Gitee ABP进阶教程0 - 目录 ABP进阶教程1 - 条件查询 A ...

  3. ABP进阶教程6 - 布局配置

    点这里进入ABP进阶教程目录 解读参数 l - length changing input control (左上,每页显示记录数) f - filtering input (右上,过滤条件) t - ...

  4. ABP进阶教程11 - 小结

    点这里进入ABP进阶教程目录 效果预览 至此,ABP进阶教程的查询/分页/排序/导出/打印示例已完成,效果如下 登录 首页 办公室信息 院系信息 课程信息 教职员信息 学生信息 新增 修改 删除 查询 ...

  5. ABP进阶教程10 - PDF导出中文乱码

    点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...

  6. ABP进阶教程9 - CSV导出中文乱码

    点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出CSV,中文信息导出为乱码. 解决方案 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\View ...

  7. ABP进阶教程3 - 优化编辑

    点这里进入ABP进阶教程目录 我们尝试在新增/编辑界面增加一个下拉框用来代替输入框编辑Status 添加实体 打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象添加一个类 ...

  8. ABP进阶教程8 - 自定义按钮

    点这里进入ABP进阶教程目录 在功能按钮区增加一个自定义按钮 - Add(创建课程) 添加按钮 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views ...

  9. ABP进阶教程7 - 功能按钮

    点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...

随机推荐

  1. Hbase数据结构和shell操作

    Hbase的数据结构 基本要素:命名空间.表.行.列.单元格,region,时间戳. 1.命名空间:NameSpaces的作用 Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果 ...

  2. js的try catch使用心得

      1 try catch的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误.也就是说你很清楚知道这里是有可能”出错“的,而且你很清楚知道什么前提下会出错,你就是要故意利用报错信息来区分错误 ...

  3. layui table 分页 序号始终从”1“开始解决方法

    在用Layui table 分页显示数据,用 type:"numbers" 进行显示序号有以下的问题 1.表格自带的分页,page:true 这种分页,在切换页面的时候序号可以正常 ...

  4. Doxygen程序注释转换说明文档

    Doxygen使用 https://www.jianshu.com/p/9464eca6aefe

  5. 使用VSCode创建一个Vue项目

    vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 安装vue-cli之前,需要先安装了vue和webpack · node -v          //(版本低引起:bas ...

  6. 获取格式字符串第idx个值及实例

    --根据索引idx值获取格式串中第idx个值 如数据'11,12,13,14,15,16' 方法:格式串+分隔符:@str='11,12,13,14,15,16'+',' select dbo.Get ...

  7. mssql sqlserver 将逗号分隔的一列数据转换为多列数据的方法分享

    转自:http://www.maomao365.com/?p=10278  摘要: 下文讲述sqlserver中将使用逗号组合的单列数据,分隔为多列数据的方法 实验环境:sql server 2012 ...

  8. java8-06-四大函数式接口

    在使用lamdba表达式需要函数式接口的支持    java8已经提供了很多函数式接口   在java.util.function包下 

  9. SQL Server 约束的增删改

    1. 非空约束 列的为空性决定表中的行是否可以包含空值.空置(NULL)不同于零(0)/空白或者长度为零的字符串(“”). (1)创建非空约束 create table orders ( docent ...

  10. WPF 精修篇 page

    原文:WPF 精修篇 page 前言 前段时间看UML 大象 这本书 虽然马上看到了精华片 最后还是暂时暂停 因为这本书 很好 但是暂时对现在的我来说 有点超前 很多东西理解起来还是很难 但是 这本书 ...