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

更新数据传输对象

打开应用层(即JD.CRS.Application)的Course\Dto\GetAllCoursesInput.cs //Course数据传输对象(查询条件)

增加一行代码

public string Keyword { get; set; } //用于全文搜索
 using Abp.Application.Services.Dto;
using JD.CRS.Entitys; namespace JD.CRS.Course.Dto
{
public class GetAllCoursesInput: PagedResultRequestDto
{
public StatusCode? Status { get; set; }
public string Keyword { get; set; }
}
}

更新应用服务

打开应用层(即JD.CRS.Application)的Course\CourseAppService.cs //Course应用服务

更新GetAll方法 //按Keyword查询Course

 .WhereIf(
!input.Keyword.IsNullOrEmpty(), t =>
t.Code.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按编号查询
|| t.DepartmentCode.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按院系编号查询
|| t.Name.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按名称查询
|| t.Credits.ToString().Contains((input.Keyword ?? string.Empty).ToLower()) //按学分查询
|| t.Remarks.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按备注查询
);

完整代码如下:

 public override async Task<PagedResultDto<CourseDto>> GetAll(GetAllCoursesInput input)
{
var query = base.CreateFilteredQuery(input)
.WhereIf(input.Status.HasValue, t => t.Status == input.Status.Value)
.WhereIf(
!input.Keyword.IsNullOrEmpty(), t =>
t.Code.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按编号查询
|| t.DepartmentCode.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按院系编号查询
|| t.Name.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按名称查询
|| t.Credits.ToString().Contains((input.Keyword ?? string.Empty).ToLower()) //按学分查询
|| t.Remarks.ToLower().Contains((input.Keyword ?? string.Empty).ToLower()) //按备注查询
);
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查询视图模型

增加一行代码

public string Keyword { get; set; }

更新控制器

打开展示层(即JD.CRS.Web.Mvc)的Controllers/CourseController.cs //Course控制器

更新Index方法 //按Keyword查询Course

增加一行代码

Keyword = input.Keyword

完整代码如下:

 public async Task<ActionResult> Index(GetAllCoursesInput input)
{
IReadOnlyList<CourseDto> output = (await _courseAppService.GetAll(new GetAllCoursesInput { Status = input.Status, Keyword = input.Keyword })).Items;
var model = new CourseListViewModel(output)
{
Status = input.Status,
Keyword = input.Keyword
};
return View(model);
}

更新视图

打开展示层(即JD.CRS.Web.Mvc)的Views/Course/Index.cshtml //Course查询视图

插入查询条件 //按Keyword查询Course

 <div class="header">
<table>
<thead>
<tr>
<th class="col-sm-1">@L("Status")</th>
<th class="col-sm-1">
@Html.DropDownListFor(
model => model.Status,
Model.GetStatusList(LocalizationManager),
new
{
@class = "form-control",
id = "Status"
})
</th>
<th class="col-sm-1">@L("Keyword")</th>
<th class="col-sm-4">
<input id="Keyword" name="Keyword" type="text" class="form-control" placeholder="Please enter the keyword..." value=@Model.Keyword />
</th>
<th class="col-sm-4"></th>
<th class="col-sm-1">
<button id="Search" class="form-control">@L("Search")</button>
</th>
</tr>
</thead>
</table>
</div>

更新脚本

打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Course查询相关脚本

插入查询条件 //按Stauts & Keyword 组合查询Course

 //define variable
var _$status = $('#Status');
var _$keyword = $('#Keyword');
var _$search = $('#Search');
//Search
_$search.click(function () {
location.href = '/Course?status=' + _$status.val() + '&keyword=' + _$keyword.val();
});

预览效果

ABP进阶教程2 - 组合查询的更多相关文章

  1. ABP进阶教程1 - 条件查询

    点这里进入ABP进阶教程目录 添加实体 打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象添加一个枚举StatusCode.cs //状态信息 using System; ...

  2. ABP进阶教程0 - 目录

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

  3. ABP进阶教程11 - 小结

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. ubuntu18.10 上安装docker容器

    网上有的安装步骤太复杂,并且安装过程中容易出错,其它安装不难,只需一条命令即可. 安装成功后,使用命令查看docker状态 systemctl status docker 安装前更新下包源 sudo ...

  2. es6 之class介绍

    class ECMAScript 2015 中引入的 JavaScript 类实质上是 JavaScript 现有的基于原型的继承的语法糖.类语法不会为JavaScript引入新的面向对象的继承模型. ...

  3. 2. 移动安全渗透测试-(Android安全基础)

    2.1 Android系统架构 1.应用程序层 平时所见的一些java为主编写的App 2.应用程序框架层 应用框架层为应用开发者提供了用以访问核心功能的API框架 android.app:提供高层的 ...

  4. 【转载】作为Android开发者,你真的熟悉Activity吗?

    学过android的人都知道,activity是最常用的四大组件之一,但你真的了解透彻activity了吗?接下来,本人将从activity的正常和异常生命周期.启动模式.IntentFilter匹配 ...

  5. mac环境下Python虚拟环境的安装和配置

    虚拟环境(virtualenv) 安装:在终端输入 pip install virtualenv 如果没安装pip会出现 pip: command not found,此时需要进行 sudo easy ...

  6. CSS绘制三角形和箭头,不用再用图片了

    前言 还在用图片制作箭头,三角形,那就太lou了.css可以轻松搞定这一切,而且颜色大小想怎么变就怎么变,还不用担心失真等问题. 先来看看这段代码: /**css*/.d1{ width: 0; he ...

  7. 转载:关于STM32硬件I2C读写EEPROM代码实现原理的理解与总结

    http://home.eeworld.com.cn/my/space-uid-716241-blogid-655190.html 一.I2C协议简介 I2C是两线式串行总线,用于连接微控制器及其外围 ...

  8. 【5】Android Service 与 AIDL

    前言:本系列仅介绍基本大体的使用步骤,而不对每个步骤进行细致的讲解.读者可作为已经对相关内容有所了解后的快速查阅. 一.单应用内Service的使用 Service组件与Activity以IBinde ...

  9. 201871010135 张玉晶 《面向对象程序设计(java)》 第一周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/wyt0455820/ ...

  10. BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路

    问题描述 BZOJ1001 LG4001 题解 平面图最小割=对偶图最短路 假设起点和终点间有和其他边都不相交的一条虚边. 如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个 ...