我在我的应用程序中使用 primefaces(v.3.0) 数据表。在 Datatable 中有两列,一列是 inputtext,另一列是 SelectOneMenu(dropdown)。
现在我想在某些情况下更改输入文本颜色,例如..
1.如果 SelectOneMenu 值被选为“Single”,输入文本框的颜色将仅为该特定 pID 的“绿色”。
2.如果 SelectOneMenu 值被选为“已婚”,则输入文本框的颜色将仅为该特定 pID 的“红色”。
3.如果 SelectOneMenu 值被选为“离婚”,则输入文本框的颜色将仅为该特定 pID 的“黄色”。
所以我正在尝试这种方式......
<h:form id="form">
<h:panelGrid columns="2" cellpadding="10" id="h">
<p:dataTable id="table" var="s"
value="#{backingBean.arrayList}"
widgetVar="empTable" rowKey="#{pt.pID}"
paginator="true" rows="15"
style="width: 100%;margin-bottom: 10px;" rowStyleClass="#{s.status}">
<f:facet name="header">
List of Patients Appointments
</f:facet>
<p:column headerText="Status" id="t">
<p:inputText value="#{s.status}" />
</p:column>
<p:column headerText="EmployeeAction">
<p:selectOneMenu id="scAction" value="#{backingBean.obj.empStatus}"
style="width:125px">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{schedulerBB.scheduleActionSelect}"
itemLabel="#{backingBean.obj.empStatus}"
itemValue="#{backingBean.obj.empStatusID}" />
<p:ajax event="change" listener="#{backingBean.changeColor(s)}" update=":form" />
</p:selectOneMenu>
</p:column>
</p:dataTable>
</h:panelGrid>
</h:form>
In CSS
.Single td:nth-child(1) input {
background-color: green;
}
.Married td:nth-child(1) input {
background-color: red;
}
.Divorced td:nth-child(1) input {
background-color: yellow;
}
In BackingBean:
private Employee obj;
//Getter setter methods
public Employee getObj() {
if(obj==null){
obj=new Employee();
}
return obj;
}
public void setObj(Employee obj) {
this.obj = obj;
}
public void changeColor(Employee e){
if(obj.getEmpStatus().equals("1")){
EmployeeDAO.updateEmpTable(e.getPID,e.getStatus);
}
css
.Single td:nth-child(1) input {
background-color: green;
}
.Married td:nth-child(1) input {
background-color: red;
}
.Divorced td:nth-child(1) input {
background-color: yellow;
}
我可以在更改特定 pID 的 selectonemenu 时更改输入文本值,但正如您所见,我已经在列级别应用了 inputtextbox 颜色更改逻辑,因此所有列 inputtext 颜色都会更改。
那么如何在行级别应用更改输入文本框颜色的逻辑(即仅适用于特定 ID)