Ich brauche Ihre Hilfe beim Aktualisieren einer bestimmten inputText-Komponente in einer DataTable aktiviert werden, wenn das Kontrollkästchen in der Zeile aktiviert ist. Hier ist der Code für die Datatable:So aktualisieren Sie bestimmte inputText in dataTable basierend auf rowSelect-Ereignis zu aktivieren oder zu deaktivieren
<h:form id="request">
<p:dataTable value="#{dataTableView.employeeList}" id="Employee" var="emp"
selection="#{dataTableView.selectedEmployees}" rowKey="#{emp.id}">
<p:ajax event="rowSelectCheckbox" listener="#{dataTableView.EnableInputText}" />
<p:ajax event="rowSelect" listener="#{dataTableView.EnableInputText}" />
<p:columnGroup type="header">
<p:row>
<p:column/>
<p:column headerText="ID"/>
<p:column headerText="Name"/>
<p:column headerText="Location"/>
<p:column headerText="Remarks"/>
</p:row>
</p:columnGroup>
<p:column selectionMode="multiple" style="width:2%;text-align:center"/>
<p:column headerText="ID">
<h:outputText value="#{emp.id}"/>
</p:column>
<p:column headerText="Name">
<h:outputText value="#{emp.name}"/>
</p:column>
<p:column headerText="Location">
<h:outputText value="#{emp.location}"/>
</p:column>
<p:column headerText="Remarks">
<h:inputText id="inputT1" value="#{emp.remarks}" disabled="#{emp.disable}"/>
</p:column>
</p:dataTable>
</h:form>
Und der Code in der Backing Bean:
private List<Student> employeeList = new ArrayList<Student>();
private List<Student> selectedEmployees;
private boolean disable=true;
public void EnableInputText(SelectEvent event) {
RequestContext context = RequestContext.getCurrentInstance();
for(int i=0;i<selectedEmployees.size();i++){
for(int j=0;j<employeeList.size();j++){
if(selectedEmployees.get(i).getId().equals(employeeList.get(j).getId()))
{
selectedEmployees.get(j).setDisable(false);
context.update("request:Employee:"+i+":inputT1");
//employeeList.get(j).setDisable(false);
}
}
}
}
Derzeit kann ich auf das Kontrollkästchen klicken, aber die inputText
wird deaktiviert bleiben und ich werde Erhalten Sie den Fehler:
java.lang.UnsupportedOperationException
Danke für Ihre Antwort. Aber leider kann ich nur auf eine Checkbox auf der Seite klicken und der inputText wird aktiviert. Wenn ich jedoch versuche, erneut auf ein anderes Kontrollkästchen zu klicken oder das Häkchen zu entfernen, passiert nichts und die Seite scheint eingefroren zu sein. – 99maas
Es scheint in meinem System gut zu funktionieren. Haben Sie einen Fehler? – Unknown
Es wird kein Fehler angezeigt – 99maas