我想在要過濾的列的DataTable使用過濾器領域,並得到過濾列表(其中填充數據表)過濾列表和更新其他組件將根據(Toplam TL Teminati和Toplam豆撈Teminati)過濾列表中的值在我的頁面。獲取DataTable中
反正有沒有做到這一點的Primefaces 2.2.1和JSF 2?如果不是,你能否讚揚這種情況下的解決方法?
在此先感謝。
我想在要過濾的列的DataTable使用過濾器領域,並得到過濾列表(其中填充數據表)過濾列表和更新其他組件將根據(Toplam TL Teminati和Toplam豆撈Teminati)過濾列表中的值在我的頁面。獲取DataTable中
反正有沒有做到這一點的Primefaces 2.2.1和JSF 2?如果不是,你能否讚揚這種情況下的解決方法?
在此先感謝。
爲了讓你的我怎麼在我的Primefaces實現自定義篩選邏輯2.2.1 dataTable的,我給你我的代碼縮放版本的例子。
<p:dataTable value="#{listBeans.beans}" var="bean" dynamic="true" paginator="true" rows="20" paginatorPosition="bottom"
emptyMessage="No Beans" loadingMessage="Loading. . ." selectionMode="single" selection="#{listBeans.selectedBean}"
id="beanList" widgetVar="beanTable">
<f:facet name="header">
<h:panelGrid columns="4">
<h:outputText value="Bean List" />
<p:outputPanel>
<h:outputText value="Year Filter: " />
<h:selectOneMenu value="#{listBeans.yearFilter}"
onchange="yearFilterBtn.jq.click(); refreshFilters();">
<f:selectItems value="#{listBeans.years}" />
</h:selectOneMenu>
<p:commandButton id="yearFilterBtn" widgetVar="yearFilterBtn" action="#{listBeans.filterYears}"
update="listBeansForm:beanList" style="display:none;" />
</p:outputPanel>
<p:outputPanel>
<h:outputText value="Filter By Beanchild: " />
<p:inputText value="#{listBeans.beanchildFilter}" style="width: 150px; margin-right: 4px;" />
<!-- refreshFilters forces the visitor filter to refresh the selection if column filters are selected. -->
<p:commandButton oncomplete="refreshFilters();" value="Filter"
action="#{listBeans.filterBeanchildren}" update="listBeansForm:beanList" />
</p:outputPanel>
<p:commandButton value="Export to XLS" ajax="false">
<p:dataExporter target="beanList" type="xls" fileName="BeanReport"
excludeColumns="0,5,6" postProcessor="#{listBeans.postProcessExcelReport}" />
</p:commandButton>
</h:panelGrid>
</f:facet>
<p:column style="width:16px">
<p:rowToggler />
</p:column>
<p:column filterStyleClass="filtertag" filterBy="#{bean.beanDateDisplay}" filterMatchMode="startsWith">
....
</p:dataTable>
沒有真正考慮太多的細節有關託管Bean代碼,命令按鈕的行爲必然是經過過濾器參數到再次查詢數據庫的beans
新列表我的BO層。 dataTable組件的顯式update
需要刷新數據。
您會注意到,在未隱藏的顯式Beanchild篩選器按鈕上,我有一個oncomplete
屬性,該屬性引用了一個名爲refreshFilters()
的JavaScript函數。我不記得確切我有問題,但我認爲這是在2.2.1版本Primefaces的一個bug,當一列過濾器值存在,並且數據表本身中發生異步更新。這裏是JavaScript函數:
function refreshFilters() {
var filters = jQuery('.filtertag');
var uppedOnce = false;
filters.each(function(idx) {
var curEl = jQuery(this);
if (curEl.val() != '') {
curEl.keyup();
uppedOnce = true;
}
});
if (!uppedOnce) {
jQuery(filters[0]).keyup();
}
}
你可以在這裏看到我的定位具有類filtertag
,這將是列篩選每一個DOM元素。我是說,如果在該領域存在的值後,服務器操作完成,然後我手動觸發keyup
事件,因爲這將「重新過濾」與之前的前值的列。
我不確定在更高版本的Primefaces中是否有必要,我甚至不確定它現在是否有必要,所以我建議嘗試在沒有Javascript解決方法的情況下執行此操作,並且如果遇到兩個問題,那麼您可以考慮使用Javascript。
非常感謝您的詳細解答。我會試一試。 – lamostreta 2012-02-09 13:48:17
是不是真的有一種能夠自動做到這一點,但也有一些自定義篩選邏輯,我能夠使用列過濾與異步更新過濾器按鈕和字段從託管bean過濾掉數據對象一起。你可以把自定義過濾器領域中的表頭,'中的 ...' –
2012-02-07 15:28:24
所以你所做的就是那種讓自己的過濾是什麼? – lamostreta 2012-02-08 08:36:48