ABP進階教程2 - 組合查詢


點這里進入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 }
View Code

更新應用服務

打開應用層(即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 }
View Code

更新模型

打開展示層(即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 }
View Code

更新視圖

打開展示層(即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>
View Code

更新腳本

打開展示層(即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 });

預覽效果

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM