feat: 支持 SearchText 参数传递给页面
This commit is contained in:
parent
09a3523432
commit
a0c249719a
src/admin/Bootstrap.Admin
Components
Pages/Components
Shared
wwwroot/js
|
@ -34,7 +34,7 @@ namespace Bootstrap.Admin.Components
|
|||
/// 查询按钮回调方法
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public Func<int, int, QueryData<TItem>>? OnQuery { get; set; }
|
||||
public Func<int, int, string, QueryData<TItem>>? OnQuery { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获得/设置 TableHeader 实例
|
||||
|
@ -171,7 +171,8 @@ namespace Bootstrap.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <param name="pageItems"></param>
|
||||
/// <param name="searchText"></param>
|
||||
/// <returns></returns>
|
||||
protected QueryData<TItem> QueryData(int pageIndex, int pageItems) => OnQuery?.Invoke(pageIndex, pageItems) ?? new QueryData<TItem>();
|
||||
protected QueryData<TItem> QueryData(int pageIndex, int pageItems, string searchText) => OnQuery?.Invoke(pageIndex, pageItems, searchText) ?? new QueryData<TItem>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ namespace Bootstrap.Admin.Components
|
|||
/// 点击翻页回调方法
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public Func<int, int, QueryData<TItem>>? OnQuery { get; set; }
|
||||
public Func<int, int, string, QueryData<TItem>>? OnQuery { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 新建按钮回调方法
|
||||
|
@ -230,7 +230,7 @@ namespace Bootstrap.Admin.Components
|
|||
if (OnAdd != null) EditModel = OnAdd.Invoke();
|
||||
if (OnQuery != null)
|
||||
{
|
||||
var queryData = OnQuery.Invoke(1, DefaultPageItems);
|
||||
var queryData = OnQuery.Invoke(1, DefaultPageItems, SearchText);
|
||||
Items = queryData.Items;
|
||||
TotalCount = queryData.TotalCount;
|
||||
}
|
||||
|
@ -241,11 +241,8 @@ namespace Bootstrap.Admin.Components
|
|||
/// </summary>
|
||||
protected override async System.Threading.Tasks.Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (FixedHeader)
|
||||
{
|
||||
// 调用客户端脚本 resetWith
|
||||
await JSRuntime.InitTableAsync(RetrieveId(), firstRender);
|
||||
}
|
||||
// 调用客户端脚本
|
||||
await JSRuntime.InitTableAsync(RetrieveId(), firstRender);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -367,7 +364,7 @@ namespace Bootstrap.Admin.Components
|
|||
/// </summary>
|
||||
protected void Query()
|
||||
{
|
||||
if (OnQuery != null) Query(OnQuery.Invoke(PageIndex, PageItems));
|
||||
if (OnQuery != null) Query(OnQuery.Invoke(PageIndex, PageItems, SearchText));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -443,5 +440,26 @@ namespace Bootstrap.Admin.Components
|
|||
PageIndex = 1;
|
||||
Query();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获得/设置 搜索关键字
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string SearchText { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// 获得/设置 搜索关键字改变事件
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<string> SearchTextChanged { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 重置搜索按钮调用此方法
|
||||
/// </summary>
|
||||
protected void ClearSearchClick()
|
||||
{
|
||||
SearchText = "";
|
||||
Query();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,12 +34,14 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected override QueryData<BootstrapDict> Query(int pageIndex, int pageItems)
|
||||
/// <param name="searchText"></param>
|
||||
protected override QueryData<BootstrapDict> Query(int pageIndex, int pageItems, string searchText)
|
||||
{
|
||||
var data = DataAccess.DictHelper.RetrieveDicts();
|
||||
if (QueryModel.Define != -1) data = data.Where(d => d.Define == QueryModel.Define);
|
||||
if (!string.IsNullOrEmpty(QueryModel.Name)) data = data.Where(d => d.Name.Contains(QueryModel.Name, StringComparison.OrdinalIgnoreCase));
|
||||
if (!string.IsNullOrEmpty(QueryModel.Category)) data = data.Where(d => d.Category.Contains(QueryModel.Category, StringComparison.OrdinalIgnoreCase));
|
||||
if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.Category.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Code.Contains(searchText, StringComparison.OrdinalIgnoreCase));
|
||||
var totalCount = data.Count();
|
||||
var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems);
|
||||
return new QueryData<BootstrapDict>() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems };
|
||||
|
@ -54,11 +56,11 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// 删除方法
|
||||
/// </summary>
|
||||
protected override bool Delete(IEnumerable<BootstrapDict> items) => DataAccess.DictHelper.Delete(items.Select(item => item.Id ?? ""));
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重置搜索方法
|
||||
/// </summary>
|
||||
protected void ResetSearch()
|
||||
protected void ResetSearch()
|
||||
{
|
||||
QueryModel.Define = -1;
|
||||
QueryModel.Category = "";
|
||||
|
|
|
@ -16,7 +16,8 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected override QueryData<Group> Query(int pageIndex, int pageItems)
|
||||
/// <param name="searchText"></param>
|
||||
protected override QueryData<Group> Query(int pageIndex, int pageItems, string searchText)
|
||||
{
|
||||
var data = GroupHelper.Retrieves();
|
||||
if (!string.IsNullOrEmpty(QueryModel.GroupName)) data = data.Where(d => d.GroupName.Contains(QueryModel.GroupName, StringComparison.OrdinalIgnoreCase));
|
||||
|
|
|
@ -115,7 +115,8 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected override QueryData<BootstrapMenu> Query(int pageIndex, int pageItems)
|
||||
/// <param name="searchText"></param>
|
||||
protected override QueryData<BootstrapMenu> Query(int pageIndex, int pageItems, string searchText)
|
||||
{
|
||||
var data = MenuHelper.RetrieveMenusByUserName(UserName);
|
||||
if (!string.IsNullOrEmpty(QueryModel.Name)) data = data.Where(d => d.Name.Contains(QueryModel.Name, StringComparison.OrdinalIgnoreCase));
|
||||
|
|
|
@ -26,7 +26,8 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected abstract QueryData<TItem> Query(int pageIndex, int pageItems);
|
||||
/// <param name="searchText"></param>
|
||||
protected abstract QueryData<TItem> Query(int pageIndex, int pageItems, string searchText);
|
||||
|
||||
/// <summary>
|
||||
/// OnParametersSet 方法
|
||||
|
|
|
@ -16,7 +16,8 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected override QueryData<Role> Query(int pageIndex, int pageItems)
|
||||
/// <param name="searchText"></param>
|
||||
protected override QueryData<Role> Query(int pageIndex, int pageItems, string searchText)
|
||||
{
|
||||
var data = RoleHelper.Retrieves();
|
||||
if (!string.IsNullOrEmpty(QueryModel.RoleName)) data = data.Where(d => d.RoleName.Contains(QueryModel.RoleName, StringComparison.OrdinalIgnoreCase));
|
||||
|
|
|
@ -16,7 +16,8 @@ namespace Bootstrap.Pages.Admin.Components
|
|||
/// </summary>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <param name="pageItems">每页显示数据条目数量</param>
|
||||
protected override QueryData<User> Query(int pageIndex, int pageItems)
|
||||
/// <param name="searchText"></param>
|
||||
protected override QueryData<User> Query(int pageIndex, int pageItems, string searchText)
|
||||
{
|
||||
var data = UserHelper.Retrieves();
|
||||
if (!string.IsNullOrEmpty(QueryModel.UserName)) data = data.Where(d => d.UserName.Contains(QueryModel.UserName, StringComparison.OrdinalIgnoreCase));
|
||||
|
|
|
@ -19,12 +19,12 @@
|
|||
</div>
|
||||
<div class="float-right @(ShowSearch ? "search btn-group" : "search btn-group d-none")">
|
||||
<div class="input-group">
|
||||
<input class="form-control search-input" type="text" placeholder="搜索" />
|
||||
<input class="form-control search-input" type="text" placeholder="搜索" @bind="SearchText" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-secondary" type="button" title="搜索">
|
||||
<button class="btn btn-secondary" type="button" title="搜索" @onclick="SearchClick">
|
||||
<i class="fa fa-search"></i><span>搜索</span>
|
||||
</button>
|
||||
<button class="btn btn-secondary" type="button" title="清空过滤">
|
||||
<button class="btn btn-secondary" type="button" title="清空过滤" @onclick="ClearSearchClick">
|
||||
<i class="fa fa-trash"></i> <span>清空过滤</span>
|
||||
</button>
|
||||
<button class="btn btn-secondary" type="button" title="高级搜索" @onclick="AdvancedSearchClick">
|
||||
|
@ -59,7 +59,7 @@
|
|||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="fixed-table-body visible">
|
||||
<div class="fixed-table-body invisible">
|
||||
<table class="table table-bordered table-hover table-selected" id="@RetrieveId()">
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -168,31 +168,46 @@
|
|||
var $table = $('#' + id);
|
||||
var $fixedBody = $table.parents('.fixed-table-body');
|
||||
|
||||
if (firstRender) {
|
||||
// calc height
|
||||
$.resetTableHeight($fixedBody);
|
||||
// 固定表头设置
|
||||
if ($fixedBody.length === 1) {
|
||||
if (firstRender) {
|
||||
// calc height
|
||||
$.resetTableHeight($fixedBody);
|
||||
|
||||
// modify scroll
|
||||
$table.parent().overlayScrollbars({
|
||||
className: 'os-theme-dark',
|
||||
scrollbars: {
|
||||
autoHide: 'leave',
|
||||
autoHideDelay: 100
|
||||
}
|
||||
});
|
||||
// modify scroll
|
||||
$table.parent().overlayScrollbars({
|
||||
className: 'os-theme-dark',
|
||||
scrollbars: {
|
||||
autoHide: 'leave',
|
||||
autoHideDelay: 100
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var $tableContainer = $table.parents('.table-wrapper');
|
||||
var $tableHeader = $tableContainer.find('.fixed-table-header table');
|
||||
$.resetTableWidth($table, $tableHeader);
|
||||
|
||||
if (firstRender) {
|
||||
$tableContainer.find('.fixed-table-body').removeClass('invisible');
|
||||
|
||||
$(window).on('resize', function () {
|
||||
$.resetTableWidth($table, $tableHeader);
|
||||
$.resetTableHeight($fixedBody);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var $tableContainer = $table.parents('.table-wrapper');
|
||||
var $tableHeader = $tableContainer.find('.fixed-table-header table');
|
||||
$.resetTableWidth($table, $tableHeader);
|
||||
|
||||
// set search toolbar
|
||||
if (firstRender) {
|
||||
$tableContainer.find('.fixed-table-body').removeClass('invisible');
|
||||
|
||||
$(window).on('resize', function () {
|
||||
$.resetTableWidth($table, $tableHeader);
|
||||
$.resetTableHeight($fixedBody);
|
||||
});
|
||||
var $search = $table.parents('.bootstrap-table').find('.fixed-table-toolbar').find('.search');
|
||||
if ($search.length === 1) {
|
||||
$searchInput = $search.find('.search-input').tooltip({
|
||||
sanitize: false,
|
||||
title: '<div class="search-input-tooltip">输入任意字符串全局搜索 </br> <kbd>Enter</kbd> 搜索 <kbd>ESC</kbd> 清除搜索</div>',
|
||||
html: true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue