[英]Primefaces datatable cell edit dropdown problems
我有 Primefaces <p:datatable>
启用了 cellEdit 模式,这意味着当单击单元格时,它会更改为编辑模式,当您单击其他地方(onblur)时,单元格返回到 output 模式并调用 cellEdit ajax 事件(如果更改)。
在数据表可编辑单元格中,我将<p:selectOneMenu>
和<p:autoComplete>
与下拉菜单一起使用。 Primefaces 在单元格容器外生成 HTML 下拉菜单代码,所以每次我从下拉菜单中输入 select 内容时,单元格都会保存值并退出编辑模式,我需要它保持编辑模式。
我知道这适用于<h:selectOneMenu>
,但使用其他元素不是我的选择。
有没有办法让单元格编辑忽略下拉菜单的点击?
还是有一种方法可以防止在打开下拉菜单时触发 onblur 事件?
在我的例子中,数据表的列是动态的。
我用:
Primefaces 5.3
PrimeFaces 扩展 4.0.0
莫哈拉 2.2.9
野蝇 8
这个问题的一个基本例子:
xhtml:
<h:form id="form">
<p:dataTable id="cars" var="car" value="#{dtEditView.cars}" editable="true" editMode="cell" widgetVar="cellCars">
<p:ajax event="cellEdit" />
<p:column headerText="Car">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.title}" /></f:facet>
<f:facet name="input"><p:inputText value="#{car.title}" style="width:100%" label="Car"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Color">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.color}" /></f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{car.color}" style="width:100%">
<f:selectItem itemLabel="Red" itemValue="Red" />
<f:selectItem itemLabel="Blue" itemValue="Blue" />
<f:selectItem itemLabel="Green" itemValue="Green" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</h:form>
支持豆:
@ViewScoped
@Named("dtEditView")
public class TestController implements Serializable {
List<Car> cars=new ArrayList<Car>();
@PostConstruct
public void init(){
cars.add(new Car("BMW","Red"));
cars.add(new Car("Alfa Romeo","Green"));
}
public List<Car> getCars() {
return cars;
}
public void setCars(List<Car> cars) {
this.cars = cars;
}
}
汽车object:
public class Car {
String title;
String color;
Car(String title, String color){
this.title=title;
this.color=color;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
我不确定这是否直接相关,但在 Primereact 中,对于同一个 DataTable 组件,如果单元格编辑和下拉列表一起使用,当您单击下拉列表和 select 列表中的值时,您会得到相同的行为,它被解释为单击单元格外部,编辑模式结束而不保存值。
这可以通过向下拉列表添加appendTo='self'来纠正,使列表显示为附加到下拉列表和单元格,这意味着点击不被归类为单元格外部。 在下拉列表中设置此值会导致单元格保持编辑模式的预期行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.