You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ABP框架Web应用开发教程的DataTable中实现搜索功能

ABP Framework DataTable搜索功能实现方案

你遇到的问题核心原因是配置中开启了serverSide: true,该模式下DataTable的搜索、排序、分页逻辑全部由后端接口处理,前端仅做参数传递和结果渲染,仅设置searching: true只会显示搜索框,不会自动生效。你可以按照以下步骤调整:

后端接口调整

  • 首先修改对应应用服务的查询方法,新增搜索参数接收逻辑,示例代码如下:
public async Task<PagedResultDto<WordDto>> GetListAsync(PagedAndSortedResultRequestDto input, string filter)
{
    // 新增搜索过滤逻辑,根据你的业务需求调整匹配字段
    var query = _wordRepository
        .WhereIf(!string.IsNullOrWhiteSpace(filter), 
            w => w.WordContent.Contains(filter) || w.Remark.Contains(filter)
        );
    
    // 原有排序、分页、DTO映射逻辑保持不变
    var totalCount = await query.CountAsync();
    var items = await query.OrderBy(input.Sorting ?? "Id desc")
        .PageBy(input)
        .ToListAsync();
    
    return new PagedResultDto<WordDto>(totalCount, ObjectMapper.Map<List<Word>, List<WordDto>>(items));
}

前端配置调整

  • 修改Index.js中的DataTable配置,新增搜索参数传递逻辑,示例代码如下:
var dataTable = $('#WordsTable').DataTable(
   abp.libs.datatables.normalizeConfiguration({
   serverSide: true,
   paging: true,
   order: [[1, "asc"]],
   searching: true,
   scrollX: true,
   // 新增搜索参数传递配置
   ajax: abp.libs.datatables.createAjax(
       // 替换为你实际的后端接口自动生成的代理方法
       yourProjectName.words.word.getList,
       function(data) {
           return {
               filter: data.search.value
           };
       }
   ),
   // 你的原有列配置保持不变
   columnDefs: [
       // ...原有列定义
   ]
   ...

可选优化

你可以在配置中新增searchDelay: 500参数,设置输入后延迟500毫秒再发起请求,避免输入过程中频繁调用后端接口。

内容的提问来源于stack exchange,提问作者Metal-Frog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:57:01