setDisable用于在CRM表单
问题描述:
我需要禁用一个部分,如果从其他字段中的值是真科的各个领域,通常我会做:setDisable用于在CRM表单
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最答案nd做以下比较: controlIHave.getParent().getLabel()=="name of the section
但经过一些试验后,我发现我可以使用Xrm.Page.ui.tabs.get(tabNumber).sections.get(sectionNumber).controls.get()
来获取该节内的控件。这允许我使用下面的功能:通过使用controls[i].getAttribute()
那么你可以得到一个部分的属性
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)
}
}
。
我结束了创建一个对象,让我关闭并清除所有字段中的一段:
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);
答
function TabObject(tabName, DisableStatus) {
var sectionName = Xrm.Page.ui.tabs.get(tabName).sections.get();
for (var i in sectionName) {
var controls = sectionName[i].controls.get();
var controlsLenght = controls.length;
for (var i = 0; i < controlsLenght; i++) {
controls[i].setDisabled(DisableStatus);
}
}
}
答
在CRM 2013(及更高版本),你可以使用forEach
迭代器。这基本上允许单线功能。
/* Parameters:
* tabNumber = Tab Name/Id assigned in the form editor.
* sectionNumber = Section Name/Id assigned in the form editor.
*/
function sectionSetDisabled(tabNumber, sectionNumber, disabledStatus) {
// Pull the tab, then section (within the tab) and create an iterator.
Xrm.Page.ui.tabs.get(tabNumber).sections.get(sectionNumber).controls.forEach(
// Delegate to set the status of all controls within the section.
function (control, index) {
control.setDisabled(disabledStatus);
});
}