如何将 inputText 的值重置为 rowUnselectCheckbox 上的原始值
How to reset the value of an inputText to the original value on rowUnselectCheckbox
我需要你的帮助,将 inputText 中的值重置为其原始值,一旦取消选中该行的复选框,就会在页面加载时检索该值。在这种情况下,我有一个数据表,一旦用户单击该行中的复选框,inputText 将被启用和编辑。如果用户取消选中复选框,我想撤消在 inputText 中添加的文本。在当前情况下,如果用户取消选中该行,则添加的字符将保留在 inputText 中。
这是数据表的代码:
<p:dataTable value="#{testController.employeeList}" id="Employee" var="emp"
selection="#{testController.selectedEmployees}" rowKey="#{emp.id}" emptyMessage="No Employees found.">
<p:ajax event="rowSelectCheckbox" listener="#{testController.EnableInputText}" update="Employee"/>
<p:ajax event="rowUnselectCheckbox" listener="#{testController.onRowUnselect}" update="Employee"/>
<p:columnGroup type="header">
<p:row>
<p:column/>
<p:column headerText="ID"/>
<p:column headerText="Name"/>
<p:column headerText="Remarks"/>
<p:column headerText="Delete"/>
</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="Remarks">
<h:inputText id="inputT1" value="#{emp.remarks}" disabled="#{emp.disable}"/>
</p:column>
</p:dataTable>
以及支持 bean 中的代码:
private List<Employee> employeeList;
private List<Employee> selectedEmployees;
public void EnableInputText(SelectEvent event) {
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())) {
employeeList.get(j).setDisable(false);
}
}
}
}
public void onRowUnselect(UnselectEvent unselectEvent) {
Employee emp = (Employee)unselectEvent.getObject();
for (Employee e : employeeList) {
if (emp.getId().equals(e.getId())) {
e.setDisable(true);
}
}
}
假设 inputText 中的值是 Test 并且用户勾选了行中的复选框并将其编辑为 Test555 然后在取消勾选复选框时,inputText 值应该 return 回到 Test
这看起来很简单。
你只需要使用另一个变量oldRemarks
。在员工列表初始化期间设置 oldRemarks=remarks.
public Employee(Integer id,String name,String remarks,Boolean disabled){
super();
this.id = id;
this.name = name;
this.remarks = remarks;
this.disabled = disabled;
this.oldRemarks = remarks;
}
并且在你的 UnselectEvent 中
public void onRowUnselect(UnselectEvent unselectEvent){
Employee emp = (Employee)unselectEvent.getObject();
for (Employee e : employeeList) {
if (emp.getId().equals(e.getId())) {
e.setDisabled(true);
e.setRemarks(e.getOldRemarks());
}
}
}
我需要你的帮助,将 inputText 中的值重置为其原始值,一旦取消选中该行的复选框,就会在页面加载时检索该值。在这种情况下,我有一个数据表,一旦用户单击该行中的复选框,inputText 将被启用和编辑。如果用户取消选中复选框,我想撤消在 inputText 中添加的文本。在当前情况下,如果用户取消选中该行,则添加的字符将保留在 inputText 中。
这是数据表的代码:
<p:dataTable value="#{testController.employeeList}" id="Employee" var="emp"
selection="#{testController.selectedEmployees}" rowKey="#{emp.id}" emptyMessage="No Employees found.">
<p:ajax event="rowSelectCheckbox" listener="#{testController.EnableInputText}" update="Employee"/>
<p:ajax event="rowUnselectCheckbox" listener="#{testController.onRowUnselect}" update="Employee"/>
<p:columnGroup type="header">
<p:row>
<p:column/>
<p:column headerText="ID"/>
<p:column headerText="Name"/>
<p:column headerText="Remarks"/>
<p:column headerText="Delete"/>
</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="Remarks">
<h:inputText id="inputT1" value="#{emp.remarks}" disabled="#{emp.disable}"/>
</p:column>
</p:dataTable>
以及支持 bean 中的代码:
private List<Employee> employeeList;
private List<Employee> selectedEmployees;
public void EnableInputText(SelectEvent event) {
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())) {
employeeList.get(j).setDisable(false);
}
}
}
}
public void onRowUnselect(UnselectEvent unselectEvent) {
Employee emp = (Employee)unselectEvent.getObject();
for (Employee e : employeeList) {
if (emp.getId().equals(e.getId())) {
e.setDisable(true);
}
}
}
假设 inputText 中的值是 Test 并且用户勾选了行中的复选框并将其编辑为 Test555 然后在取消勾选复选框时,inputText 值应该 return 回到 Test
这看起来很简单。
你只需要使用另一个变量oldRemarks
。在员工列表初始化期间设置 oldRemarks=remarks.
public Employee(Integer id,String name,String remarks,Boolean disabled){
super();
this.id = id;
this.name = name;
this.remarks = remarks;
this.disabled = disabled;
this.oldRemarks = remarks;
}
并且在你的 UnselectEvent 中
public void onRowUnselect(UnselectEvent unselectEvent){
Employee emp = (Employee)unselectEvent.getObject();
for (Employee e : employeeList) {
if (emp.getId().equals(e.getId())) {
e.setDisabled(true);
e.setRemarks(e.getOldRemarks());
}
}
}