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

Dynamics CRM可编辑网格中setValue方法无法生效的问题求助

解决Dynamics CRM 365本地部署可编辑网格中setValue方法不生效的问题

你遇到的问题很典型——在可编辑网格里直接调用实体属性的setValue只会修改内存中的数据,不会自动触发网格的UI更新和脏数据标记,所以看起来像是没生效。我来帮你调整代码并说明关键要点:

核心问题分析

  1. 你当前用getRows()获取的是网格所有行,但注释里写的是要获取选中行,应该改用getSelectedRows()
  2. 修改属性值后,没有标记实体为“已修改”,网格无法感知数据变化
  3. 未刷新行/网格,导致UI不更新修改后的值

修正后的代码

function updateDocsOK(ctlName, grdName, attributeName) {
    var selectedRows = null;
    var twoOptionValue = 0;
    try {
        // 获取下拉框的Yes/No值(1=Yes,0=No)
        var ctlValue = Xrm.Page.getAttribute(ctlName).getValue();
        if (ctlValue) {
            twoOptionValue = 1;
        }
        // 正确获取选中的行
        selectedRows = Xrm.Page.getControl(grdName).getGrid().getSelectedRows();
        
        // 遍历选中行进行更新
        selectedRows.forEach(function (row, rowIndex) {
            var entity = row.getData().getEntity();
            
            // 更新双选项字段
            var att = entity.attributes.getByName(attributeName);
            if (att) {
                console.log("原始值: ", att.getValue());
                att.setValue(twoOptionValue);
                console.log("修改后的值: ", att.getValue());
                // 标记实体为已修改,让系统感知到变化
                entity.setIsDirty(true);
            }
            
            // 更新文本字段
            att = entity.attributes.getByName("new_testtext");
            if (att) {
                att.setValue("hello");
                entity.setIsDirty(true);
            }
            
            // 刷新当前行,立即在UI上显示修改后的值
            row.refresh();
        });
        
        // 可选:刷新整个网格确保所有变化同步
        Xrm.Page.getControl(grdName).refresh();
    } catch (e) {
        Xrm.Utility.alertDialog(e.message);
    }
}

额外注意事项

  • 检查网格可编辑配置:在CRM表单设计器中,确认目标字段所在的网格列已经设置为「可编辑」,否则即使代码修改了值,网格也不会允许编辑显示
  • 权限验证:确保当前登录用户对该实体的目标字段有编辑权限,否则setValue会静默失败
  • 字段类型匹配:双选项字段的值固定为0(否)和1(是),你的代码这里是正确的,但要确保传入的attributeName确实是双选项类型字段
  • 保存到服务器:如果需要立即将修改同步到数据库,可以在遍历结束后调用Xrm.Page.data.save(),或者针对单个实体调用entity.save()(注意这是异步操作,需要处理回调)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:14