如何在Form.io Data-Grid组件中动态修改特定行文本框的disabled属性?
解决Form.io Data-Grid行内组件按需启用的问题
方法一:利用组件Logic标签实现(推荐)
你可以直接在title子组件的Logic设置里配置条件规则,自动根据当前行的id和userId值控制启用状态:
- 进入Data-Grid内的
title文本框组件设置面板,切换到Logic标签 - 在Enabled区域点击
Add Rule,添加一条规则 - 规则配置:
- 左侧值选择Custom Value,输入
row.id(Form.io中row代表当前数据行的上下文) - 操作符选择Equals
- 右侧值选择Custom Value,输入
row.userId
- 左侧值选择Custom Value,输入
- 保存设置后,当某行的
id和userId相等时,该行的title组件会自动变为可编辑状态,反之保持禁用。
方法二:加载数据时直接设置组件状态(备选)
如果需要在数据加载阶段就提前处理状态,也可以修改你现有的loadData函数,在构建每行数据时添加title组件的禁用状态控制:
var gridData = []; function loadData() { var apiUrl = "https://jsonplaceholder.typicode.com/posts"; fetch(apiUrl) .then(response => response.json()) .then(data => { data.forEach(function(row) { const isTitleEnabled = row.id === row.userId; gridData.push({ "id": row.id, "userId": row.userId, "title": row.title, // 通过自定义字段控制禁用状态 "title_disabled": !isTitleEnabled, "body": row.body }); }); return instance.setValue(gridData); }) } loadData();
之后进入title组件的API标签,将Disabled属性绑定到data.title_disabled,即可通过数据字段直接控制组件的禁用状态。
内容的提问来源于stack exchange,提问作者vijay s
相关产品推荐
相关产品推荐

