ABP進階教程1 - 條件查詢

来源:https://www.cnblogs.com/IT-Evan/archive/2019/10/09/ABP17.html
-Advertisement-
Play Games

點這裡進入ABP進階教程目錄 添加實體 打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象添加一個類StatusCode.cs //狀態信息 1 using System; 2 using System.Collections.Generic; 3 using Syst ...


點這裡進入ABP進階教程目錄 

添加實體

打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象
添加一個類StatusCode.cs //狀態信息

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 namespace JD.CRS.Entitys
 6 {
 7     public enum StatusCode : byte
 8     {
 9         Enabled = 0,
10         Disabled = 1
11     }
12 }
View Code

添加數據傳輸對象 

打開應用層(即JD.CRS.Application)的Course\Dto目錄 //用以存放Course相關數據傳輸對象

添加一個Dto GetAllCoursesInput.cs

 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     }
10 }
View Code

更新應用服務

打開應用層(即JD.CRS.Application)的Course\CourseAppService.cs //Course應用服務

重寫GetAll方法 //按狀態查詢Course

 1 public override async Task<PagedResultDto<CourseDto>> GetAll(GetAllCoursesInput input)
 2 {
 3     var query = base.CreateFilteredQuery(input).WhereIf(input.Status.HasValue, t => t.Status == input.Status.Value);    
 4     var coursecount = query.Count();
 5     var courselist = query.ToList();
 6     return new PagedResultDto<CourseDto>()
 7     {
 8         TotalCount = coursecount,
 9         Items = ObjectMapper.Map<List<CourseDto>>(courselist)
10     };
11 }
View Code

更新模型

打開展示層(即JD.CRS.Web.Mvc)的Models/Course/CourseListViewModel.cs //Course查詢視圖模型

新增GetStatusList方法 //獲取狀態列表

 1 public StatusCode? SelectedStatus { get; set; }
 2 
 3 public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
 4 {
 5     var list = new List<SelectListItem>
 6     {
 7         new SelectListItem
 8         {
 9             Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, "All"),
10             Value = "",
11             Selected = SelectedStatus == null
12         }
13     };
14 
15     list.AddRange(Enum.GetValues(typeof(StatusCode))
16         .Cast<StatusCode>()
17         .Select(status =>
18             new SelectListItem
19             {
20                 Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
21                 Value = status.ToString(),
22                 Selected = status == SelectedStatus
23             })
24     );
View Code

更新控制器

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

更新Index方法 //按狀態查詢Course

1 public async Task<ActionResult> Index(GetAllCoursesInput input)
2 {
3     IReadOnlyList<CourseDto> output = (await _courseAppService.GetAll(new GetAllCoursesInput { Status = input.Status })).Items;
4     var model = new CourseListViewModel(output)
5     {
6         SelectedStatus = input.Status
7     };
8     return View(model);
9 }
View Code

更新視圖

打開展示層(即JD.CRS.Web.Mvc)的Views/Course/Index.cshtml //Course查詢視圖

插入查詢條件 //按狀態查詢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.SelectedStatus,
 9                     Model.GetStatusList(LocalizationManager),
10                     new
11                     {
12                         @class = "form-control",
13                         id = "StatusCombobox"
14                     })
15                 </th>
16                 <th class="col-sm-10"></th>
17             </tr>
18         </thead>
19     </table>
20 </div>
View Code

更新腳本

打開展示層(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Course查詢相關腳本

插入查詢條件 //按狀態查詢Course

1 var _$statusCombobox = $('#StatusCombobox');
2 _$statusCombobox.change(function () {
3     location.href = '/Course?status=' + _$statusCombobox.val();
4 });
View Code

預覽效果

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實驗環境:WIN7虛擬機 軟體:VC6 首先在VC6裡面寫一個空函數Fun(); F7編譯運行一下,沒有出錯,接著在函數處使用F9下斷點,使程式運行到Fun函數時停下。 接著F5開始運行這個程式 程式停在了Fun函數處,反彙編進去進行逆向分析 可以看到程式停在Fun函數的入口處,這裡的call就是F ...
  • 摘要 在 "詳解http報文" 一文中,詳細介紹了http報文的文本結構。那麼作為服務端,web容器是如何解析http報文的呢?本文以jetty和undertow容器為例,來解析web容器是如何處理http報文的。 在前文中我們從概覽中可以瞭解到,http報文其實就是一定規則的字元串,那麼解析它們, ...
  • composer是什麼 composer是PHP的插件依賴管理工具,我個人感覺和java的Maven、Gradle很類似。 Windows OS下安裝composer 參考: https://www.php.cn/php weizijiaocheng 400785.html https://blog ...
  • 聊起中斷,大家可能最熟悉的例子就是線程休眠。下麵就是一個線程休眠的 demo,在這個例子中,當我們調用 方法,該方法將會拋出一個需要捕獲的中斷異常,這裡捕獲該異常並直接返回。 java for (int i = 0; i An interrupt is an indication to a thre ...
  • 使用Mybatis查詢客戶端信息 前面的例子使用了預設的jdbc配置來動態從資料庫查詢客戶端信息,下麵來改用更加靈活的mybatis來實現,改用mybatis,首先pom中換成mybatis的依賴: 然後新建一個實體類,並實現查詢需要的 ClientDetails 介面: 由於介面預設需要實現的方法 ...
  • 類型和變數 [C#類型和變數(原文參考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-variables C#有兩種類型: 1. 值類型 1. 簡單類型 2. 枚舉類型 格式為 enum E ...
  • 委托 1. C# 中的委托類似於 C 或 C++ 中指向函數的指針。委托表示引用某個方法的引用類型變數,運行時可以更改引用對象。 2. 特別地,委托可以用於處理事件或回調函數。並且,所有的委托類都是從 System.Delegate 類繼承而來。 聲明委托的語法規則:(被委托所引用的方法需有相同的參 ...
  • C#程式計算N階行列式的值及N元一次方程組 用了挺長時間自行完成了C#程式計算N階行列式的值及N元一次方程組。由於自己沒有在網上查閱其他資料,所以只能硬著頭皮用最朴素的思想和基礎的演算法進行編程。在給出代碼之前,我先簡單發表一些自己的粗鄙之見。。。 1.數學思想:有了線性代數中高斯提供的公式,我們很容 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...