我有一个列表,其中listrow包含一个内部面板。然后,在面板内有3个文本字段。我想通过代码禁用这3个文本字段,但问题是我无法访问这3个文本字段的启用属性。
我尝试了以下内容:
var x=app.currentPage.descendants.FileList.descendants._values;
有什么想法?
根据列表小部件文档,属性表说明:
后代 - 该布局窗口小部件的所有孩子都以其名称识别。这不包括任何重复的孩子,例如列表中的行,网格,手风琴及其内容中的单元格。
因此,使用后代绝对不会给您想要的东西。此外,它还解释了:
儿童 - 该布局小部件的直接子女,由他们的名字标识。
在这里,没有指定它将排除重复的孩子,并且由于列表中的每个行是一个重复的孩子,因此这是我们需要使用的选项。
现在,调用孩子将为我们提供propertyMap,因此我们需要通过调用propertyMap值来迭代每个项目。因此,您需要这样做:
var rows = app.currentPage.descendants.FileList.children._values;
rows.forEach(function(row){
var rPanel = row.descendants.[PanelWidgetName];
var panelDescs = rPanel.descendants.
panelDescs.forEach(function(desc){
desc.enabled = true; //false
});
});
我将尝试以下代码:
var listRow = app.currentPage.descendants.FileList.children._values;
for (var i in listRow) {
var inputs = listRow[i].YourPanelName.children._values;
for (var j in inputs) {
inputs[j].enabled = false;
}
}
基本上,您首先必须访问列表widget子,即列表行,然后,对于每个列表行,您可以通过调用面板的名称,然后调用该面板内的孩子来引用每行的面板这是您的输入。这就是为什么这需要一个嵌套循环的原因。我没有测试,但应该起作用。