如何通过VB.Net后置代码逐行遍历Javascript ag-grid表格数据
可行方案说明
ag-grid是纯前端运行的JavaScript组件,所有行数据默认仅存储在浏览器端内存中,运行在服务器端的VB.Net后置代码无法直接访问前端内存数据,必须通过前端主动回传、或者复用服务端原始数据源的方式实现遍历,具体可选用以下两种方案:
方案1:前端主动同步全量数据到后端
适合ag-grid数据在前端做了修改、和服务端原始数据源不一致的场景:
- 前端侧调用ag-grid原生API获取全量行数据,序列化为JSON后通过隐藏域提交、AJAX请求等方式回传到后端
- 后端VB.Net接收JSON数据后反序列化为可遍历的集合对象即可逐行处理
前端示例代码
// 遍历ag-grid所有行节点收集数据 const allRowData = []; gridOptions.api.forEachNode(node => { allRowData.push(node.data); }); // 将数据存入隐藏域触发回发 document.getElementById('hiddenAgGridData').value = JSON.stringify(allRowData); __doPostBack('', '');
后端VB.Net示例代码
' 接收前端回传的JSON数据 Dim gridJson As String = Request.Form("hiddenAgGridData") ' 反序列化为集合(需引用Newtonsoft.Json或使用System.Text.Json) Dim allRows As List(Of Dictionary(Of String, Object)) = Newtonsoft.Json.JsonConvert.DeserializeObject(Of List(Of Dictionary(Of String, Object)))(gridJson) ' 逐行遍历处理 For Each row In allRows ' 示例:获取指定字段值 Dim fieldValue As String = row("对应的ag-grid列字段名")?.ToString() ' 此处添加自定义业务逻辑 Next
方案2:复用服务端原始数据源
适合ag-grid的渲染数据本身由VB.Net后端提供、且前端未修改行数据的场景:
- 直接使用后端存储的ag-grid原始数据源遍历即可,不需要额外做前后端数据同步
- 该方案效率最高,也不会出现前后端数据不一致的问题,优先推荐使用
注意事项
- 如果ag-grid使用的是客户端行模型,
api.forEachNode()可以遍历所有已经加载到前端的行数据;如果使用的是服务端行模型/无限行模型,前端只会缓存部分行数据,此时建议直接复用服务端原始数据源获取全量数据 - 数据量超过1000行时不建议全量回传,会显著增加请求体积和服务端解析耗时,建议优先筛选需要处理的行再回传
内容的提问来源于stack exchange,提问作者simon shaw
相关产品推荐
相关产品推荐

