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