0

我已经运行了这段代码:

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之间有更多的东西,但经过几个小时的谷歌搜索后,我开始得出结论,我一定是在幻想或幻想。

4

2 回答 2

1

我使用 getControl 功能,它工作正常。应采用以下形式:

Xrm.Page.getControl(controlId).setDisabled(disabled);

请记住,除非您将提交模式设置为“始终”,否则禁用的控件将不会更新。

于 2012-12-28T17:27:24.083 回答
1

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

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

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

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

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

因此,如果您需要禁用这些字段,请从 GUI 设计器中启用它们或触发onLoad方法为您执行此操作。

于 2012-12-29T00:16:14.377 回答