在我的情况下,我有3列,每列都取决于上一列。 用户必须输入第1列中的所有单元格,以便第2列可编辑,然后他输入第2列以使第3列可编辑。 如果他清除了单元格,则应禁用从属列。
我如何使用JavaScript处理它
请在下面的图片中查找:
答案 0 :(得分:1)
我假设您的表格单元格将是af:input text
。
您不需要显式的JS来实现此目的,因为您可以在ADF本身中实现它。因此,如果您不需要在JS中执行此操作,则可以按以下方式尝试。有了Button,我们有了action
或actionListener
,就像拥有valueChangeListener
和inputText
一样。
假设您有2个输入文本(表中2个单元格)。
<af:inputText value="#{bindings.ESal.inputValue}"
label="#{bindings.ESal.hints.label}"
required="#{bindings.ESal.hints.mandatory}"
columns="#{bindings.ESal.hints.displayWidth}"
maximumLength="#{bindings.ESal.hints.precision}"
shortDesc="#{bindings.ESal.hints.tooltip}" id="it11"
autoSubmit="true" valueChangeListener="#{bean1.textChange}"
>
<f:validator binding="#{bindings.ESal.validator}" />
</af:inputText>
autoSubmit = true
作为输入文本
改变了。使用valueChangeListener事件并以textChange
的方式创建方法
如上所示。只要您的输入文本发生更改,就会触发该操作(在选项卡上也会更改)。
<af:inputText label="Output label" id="ol1"
partialTriggers="it11" binding="#{bean1.lbl}"
disabled="true"/>
此inputText依赖于第一个。默认情况下它是禁用的。
为此inputText创建一个绑定,该绑定可用于托管 豆。
public void textChange(ValueChangeEvent valueChangeEvent) {
// Add event code here...
if(!(valueChangeEvent.getNewValue()==null ||
valueChangeEvent.getNewValue().equals(""))) // checking input Text value
{ // if not null
lbl.setDisabled(false); //then enable it
AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
adfFacesContext.addPartialTarget(lbl); // refresh the binding
}
else
{
lbl.setDisabled(true); //else disable it.
AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
adfFacesContext.addPartialTarget(lbl);
}
}
答案 1 :(得分:0)
为ViewObject启用Java RowImpl,以便您可以控制getter中返回的数据