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
相关产品推荐
相关产品推荐

