javascript - 无法禁用(设置为只读、保护、灰显等)字段

标签 javascript dynamics-crm-2011 dynamics-crm-online

我运行了这段代码:

Xrm.Page.data.entity.attributes.get("subject").setValue("Beep");;
alert(Xrm.Page.ui.controls.get("subject").setDisabled);
Xrm.Page.ui.controls.get("subject").setDisabled(true);

正如预期的那样,我将文本 Beep 输入到字段中。正如预期的那样,警报告诉我该方法的内容(据我所知,他们正在做他们应该做的事情)。

但是,控件本身不会被禁用。我做错了什么?

我相信我看到了一个不同方法的示例(getsetDisabled之间有更多的东西,但经过几个小时的谷歌搜索后,我我开始得出结论,我一定是出现了幻觉或痴心妄想。

最佳答案

您的代码是正确的,所以它应该可以工作。 @Daryl 使用的语法是正确的。这两行是等价的。较短的一个只是缩短另一个的语法糖。所以,你应该使用他的。

Xrm.Page.ui.controls.get("subject").setDisabled(true);
Xrm.Page.getControl("subject).setDisabled(true);

如果您发出警报并获取该方法的内容,则意味着您正在使用正确的组件和正确的方法。然而,可以说尽管有调用,但控件不会被禁用。我认为你错了。

这就是我认为会发生的事情。控件被禁用,然后,在您有时间注意到它之前,表单被更新,渲染掉您的禁用操作。

请记住,与字段数据不同,禁用的属性不会存储到数据库中。如果您将一个字段设计为 protected ,它就会保持这种状态。但是,如果您在客户端的 JavaScript 代码中设置这样的属性,则外观只会持续到执行页面重新加载为止。

因此,如果您需要禁用这些字段,请通过 GUI 设计器将其禁用,或者触发一个 onLoad 方法来为您执行此操作。

关于javascript - 无法禁用(设置为只读、保护、灰显等)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14072900/

相关文章:

javascript - 不理解新函数的参数作为参数

php - POST 值不显示在 javascripts 中

javascript - 正则表达式替换字符串逗号的一部分

javascript - Firefox 扩展如何将字符串类型变量传递给 javascript 替换正则表达式参数?

silverlight - Dynamics CRM 2011 Developer - 生成错误

c# - 在 Dynamics 365 API 上运行查询

dynamics-crm-2011 - 引用 CodeGeneration.CodeCustomization 对早期绑定(bind)生成的 CRM 实体有何变化?

javascript - 使用javascript在crm 2011中基于安全角色隐藏站点地图中的链接

entity - 在 Microsoft CRM 2011 中,您能否在映射回地址实体的帐户上创建自定义地址字段?

dynamics-crm-online - 实时工作流的自定义工作流事件中缺少跟踪日志