1
是否可以对primefaces数据网格数据进行排序?因为我知道这是可能的数据table.if它是不可能的默认情况下,是否有任何其他方式来做到这一点?谢谢是否可以对primefaces Datagrid进行排序?
是否可以对primefaces数据网格数据进行排序?因为我知道这是可能的数据table.if它是不可能的默认情况下,是否有任何其他方式来做到这一点?谢谢是否可以对primefaces Datagrid进行排序?
Primefaces datagrid不提供排序和筛选功能,似乎没有计划在不久的将来实现它。
我已经实现了在数据网格上使用ap:selectOneMenu在数据网格上方排序,并使用诸如“日期”,“价格(最高优先)”,“价格(最低优先)”等排序选项对数据网格进行排序。我使用ajax事件来调用一个方法,使用合适的ORDER BY从数据库重新加载集合。
例子:
<h:form>
<h:outputLabel value="Sort by: " />
<p:selectOneMenu value="#{bean.selectedField}" >
<f:selectItems value="#{bean.sortingFields}" />
<p:ajax event="change" update="grid" />
</p:selectOneMenu>
<p:dataGrid id="grid" value="#{bean.collection}" var="item" >
<!-- contents of datagrid here -->
</p:dataGrid>
</h:form>
而在托管bean:
private List<SelectItem> sortingFieds;
private String selectedField, currentSortField;
private boolean asc;
private List<YourEntity> collection;
@EJB private YourEJB yourEjb;
public void init() {
// load sortingFields with list of fields to order by
// set default value for currentSortField
asc = true;
collection = yourEjb.loadCollection(sortField, asc);
}
public void sortCollection() {
if(currentSortField.equals(selectedField) {
asc = !asc;
} else {
currentSortField = selectedField;
asc = true;
}
collection = yourEjb.loadCollection(sortField, asc);
}
而且在EJB
public List<YourEntity> loadCollection(String sortfield, boolean asc) {
String q = "SELECT e FROM YourEntity e ORDER BY " + sortfield + " ";
if(asc) {
q += "ASC";
} else {
q += "DESC";
}
Query query = entityManager.createQuery(q);
return query.getResultList();
}
@BernadAli如果这不是对你不够清楚,我可以添加一些代码。 – Damian 2012-07-11 12:22:40
感谢Damian对你的建议。请给出一个例子吗?这会有帮助 – 2012-07-11 15:28:36
@BernadAli添加示例 – Damian 2012-07-15 19:06:55