欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ABP进阶教程2 - 组合查询

程序员文章站 2023-12-17 18:17:58
点这里进入ABP进阶教程目录 更新数据传输对象 打开应用层(即JD.CRS.Application)的Course\Dto\GetAllCoursesInput.cs //Course数据传输对象(查询条件) 增加一行代码 1 using Abp.Application.Services.Dto; ......

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

更新数据传输对象 

打开应用层(即jd.crs.application)的course\dto\getallcoursesinput.cs //course数据传输对象(查询条件)

增加一行代码

public string keyword { get; set; } //用于全文搜索
 1 using abp.application.services.dto;
 2 using jd.crs.entitys;
 3 
 4 namespace jd.crs.course.dto
 5 {
 6     public class getallcoursesinput: pagedresultrequestdto
 7     {
 8         public statuscode? status { get; set; }
 9         public string keyword { get; set; }
10     }
11 }

更新应用服务

打开应用层(即jd.crs.application)的course\courseappservice.cs //course应用服务

更新getall方法 //按keyword查询course

1 .whereif(
2 !input.keyword.isnullorempty(), t =>
3 t.code.tolower().contains((input.keyword ?? string.empty).tolower()) //按编号查询
4 || t.departmentcode.tolower().contains((input.keyword ?? string.empty).tolower()) //按院系编号查询
5 || t.name.tolower().contains((input.keyword ?? string.empty).tolower()) //按名称查询
6 || t.credits.tostring().contains((input.keyword ?? string.empty).tolower()) //按学分查询
7 || t.remarks.tolower().contains((input.keyword ?? string.empty).tolower()) //按备注查询
8 );

完整代码如下:

 1 public override async task<pagedresultdto<coursedto>> getall(getallcoursesinput input)
 2 {
 3     var query = base.createfilteredquery(input)
 4         .whereif(input.status.hasvalue, t => t.status == input.status.value)
 5         .whereif(
 6         !input.keyword.isnullorempty(), t =>
 7         t.code.tolower().contains((input.keyword ?? string.empty).tolower()) //按编号查询
 8         || t.departmentcode.tolower().contains((input.keyword ?? string.empty).tolower()) //按院系编号查询
 9         || t.name.tolower().contains((input.keyword ?? string.empty).tolower()) //按名称查询
10         || t.credits.tostring().contains((input.keyword ?? string.empty).tolower()) //按学分查询
11         || t.remarks.tolower().contains((input.keyword ?? string.empty).tolower()) //按备注查询
12         );
13     var coursecount = query.count();
14     var courselist = query.tolist();
15     return new pagedresultdto<coursedto>()
16     {
17         totalcount = coursecount,
18         items = objectmapper.map<list<coursedto>>(courselist)
19     };
20 }

更新模型

打开展示层(即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

完整代码如下:

 1 public async task<actionresult> index(getallcoursesinput input)
 2 {
 3     ireadonlylist<coursedto> output = (await _courseappservice.getall(new getallcoursesinput { status = input.status, keyword = input.keyword })).items;
 4     var model = new courselistviewmodel(output)
 5     {
 6         status = input.status,
 7         keyword = input.keyword
 8     };
 9     return view(model);
10 }

更新视图

打开展示层(即jd.crs.web.mvc)的views/course/index.cshtml //course查询视图

插入查询条件 //按keyword查询course

 1 <div class="header">
 2     <table>
 3         <thead>
 4             <tr>
 5                 <th class="col-sm-1">@l("status")</th>
 6                 <th class="col-sm-1">
 7                     @html.dropdownlistfor(
 8                     model => model.status,
 9                     model.getstatuslist(localizationmanager),
10                     new
11                     {
12                         @class = "form-control",
13                         id = "status"
14                     })
15                 </th>
16                 <th class="col-sm-1">@l("keyword")</th>
17                 <th class="col-sm-4">
18                     <input id="keyword" name="keyword" type="text" class="form-control" placeholder="please enter the keyword..." value=@model.keyword />
19                 </th>
20                 <th class="col-sm-4"></th>
21                 <th class="col-sm-1">
22                     <button id="search" class="form-control">@l("search")</button>
23                 </th>
24             </tr>
25         </thead>
26     </table>
27 </div>

更新脚本

打开展示层(即jd.crs.web.mvc)的\wwwroot\view-resources\views\course\index.js //用以存放course查询相关脚本

插入查询条件 //按stauts & keyword 组合查询course

1 //define variable
2 var _$status = $('#status');
3 var _$keyword = $('#keyword');
4 var _$search = $('#search');
5 //search
6 _$search.click(function () {
7     location.href = '/course?status=' + _$status.val() + '&keyword=' + _$keyword.val();
8 });

预览效果

ABP进阶教程2 - 组合查询

 

ABP进阶教程2 - 组合查询

 

 

ABP进阶教程2 - 组合查询

 

 ABP进阶教程2 - 组合查询

 

上一篇:

下一篇: