如果其他字段的值为真,我需要禁用一个部分,通常我会这样做:
function disableSection1(disabledStatus){
Xrm.Page.getControl("section1field1").setDisabled(disabledStatus);
Xrm.Page.getControl("section1field2").setDisabled(disabledStatus);
Xrm.Page.getControl("section1field3").setDisabled(disabledStatus);
Xrm.Page.getControl("section1field4").setDisabled(disabledStatus);
}
但我必须为很多部分执行此操作,所以我正在寻找这样的函数:
function sectionSetDisabled(tabNumber, sectionNumber, disabledStatus){
//some code..
}
最佳答案
我看到的大多数答案都使用了 sectionLable 并进行了以下比较:
controlIHave.getParent().getLabel()=="该部分的名称
但经过一些试验后,我发现我可以使用 Xrm.Page.ui.tabs.get(tabNumber).sections.get(sectionNumber).controls.get()
来获取部分。这让我可以使用以下功能:
function sectionSetDisabled(tabNumber, sectionNumber, disablestatus) {
var section = Xrm.Page.ui.tabs.get(tabNumber).sections.get(sectionNumber);
var controls = section.controls.get();
var controlsLenght = controls.length;
for (var i = 0; i < controlsLenght; i++) {
controls[i].setDisabled(disablestatus)
}
}
通过使用 controls[i].getAttribute()
然后您可以获得一个部分的属性。
我最终创建了一个允许我禁用和清除部分中所有字段的对象:
function sectionObject(tabNumber, sectionNumber) {
var section = Xrm.Page.ui.tabs.get(tabNumber).sections.get(sectionNumber);
this.setDisabled = function (disablestatus) {
var controls = section.controls.get();
var controlsLenght = controls.length;
for (var i = 0; i < controlsLenght; i++) {
controls[i].setDisabled(disablestatus)
}
};
this.clearFields = function () {
var controls = section.controls.get();
var controlsLenght = controls.length;
for (var i = 0; i < controlsLenght; i++) {
controls[i].getAttribute().setValue(null);
}
};
}
var section=new sectionObject(0,1);
section.setDisabled(true/false);
关于javascript - 为 Crm 表单中的一个部分的所有字段设置禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707837/