2016-04-23 35 views
0

我需要您的帮助才能将inputText中的值重置为原始值,该值将在行的复选框取消选中后在页面加载中检索。在这种情况下,我有一个dataTable,一旦用户单击该行中的复选框,inputText将被启用并可编辑。如果用户未勾选复选框,我想对输入文本中添加的文本进行撤消。在当前情况下,如果用户未选中该行,则添加的字符将保留在inputText中。如何将inputText的值重置为rowUnselectCheckbox上的原始值

这里是DataTable中的代码:

<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的是测试和用户在选中的复选框并将其编辑到Test555,然后在复选框的未勾上时,inputText值应该返回到测试

回答

0

这看起来很容易。

你只需要使用另一个变量oldRemarks。在员工列表初始化期间,设置oldRemarks =备注。

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()); 
     } 
    } 
} 
+0

由于它解决了 – 99maas

+0

欢迎您,很高兴它帮助 – Unknown

相关问题