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

Syncfusion SfDataManager获取已加载数据及展示前修改方法

SfDataManager远程数据检索及返回数据预处理实现方案

不需要查找控件内部未公开的数据行存储属性,直接通过官方提供的响应拦截/读数据事件接管数据流程即可,以下是可直接复用的实现示例:

核心实现逻辑

SfDataManager默认自动绑定模式下,API返回数据会直接传递给网格渲染,没有预留自定义修改的入口,你只需要接管数据读取的生命周期,在数据传递给网格之前做处理即可。


Blazor 平台实现示例

@* 接管OnRead事件,关闭默认自动数据绑定 *@
<SfDataManager Url="https://your-api-endpoint/data" 
               Adaptor="Adaptors.WebApiAdaptor" 
               OnRead="HandleRemoteDataRead">
</SfDataManager>

<SfGrid TValue="YourDataModel" @ref="GridRef">
    @* 列配置按需补充即可 *@
</SfGrid>

@code {
    private List<YourDataModel> ProcessedData;
    private async Task HandleRemoteDataRead(DataManagerRequest request)
    {
        // 发起远程请求获取原始返回
        var apiResponse = await request.Http.GetFromJsonAsync<DataManagerResponse<YourDataModel>>(request.Url);
        
        // 在此处对数据行做任意自定义调整
        foreach (var row in apiResponse.Items)
        {
            // 示例:时区转换、计算列赋值、字段格式化
            row.CreatedAt = row.CreatedAt.ToLocalTime();
            row.DisplayAmount = row.RawAmount * row.DiscountRate;
            row.StatusText = row.Status switch { 1=>"正常", 2=>"禁用", _=>"未知" };
        }

        // 将处理后的数据传递给网格,同时保留分页/排序等元数据
        request.Result = new DataResult<YourDataModel>
        {
            Result = apiResponse.Items,
            Count = apiResponse.TotalCount
        };
        ProcessedData = apiResponse.Items.ToList();
    }
}

JS/React/Vue 前端框架实现示例

import { DataManager, WebApiAdaptor } from '@syncfusion/ej2-data';

const dataManager = new DataManager({
  url: 'https://your-api-endpoint/data',
  adaptor: new WebApiAdaptor()
});

// 注册响应处理拦截器
dataManager.addEventListener('processResponse', (eventArgs) => {
  // eventArgs.result 就是API返回的原始数据行数组
  const processedRows = eventArgs.result.map(row => {
    // 在此处做自定义数据调整
    return {
      ...row,
      createdAt: new Date(row.createdAt).toLocaleString(),
      displayAmount: row.rawAmount * row.discountRate
    }
  });
  // 替换原始返回结果,后续网格拿到的就是处理后的数据
  eventArgs.result = processedRows;
  return eventArgs;
});

// 将配置好的dataManager绑定到SfGrid的dataSource属性即可

注意事项

  • 不要通过反射或者访问控件私有字段的方式获取已接收的数据,这类内部属性不会做版本兼容,版本迭代后很容易失效
  • 如果需要同时保留SfDataManager内置的排序、分页、筛选能力,处理数据时不要修改返回结果的总数字段,只调整数据行内容即可
  • 不同版本的SfDataManager事件命名可能略有差异,如果找不到OnRead/processResponse事件,可以查找对应版本中「自定义数据读取」「响应拦截」相关的API,实现逻辑完全一致。

内容的提问来源于stack exchange,提问作者Doc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:47:06