我爲時已晚,無法回覆。但它可能有助於某人。當用戶沒有選擇任何複選框時,我有相同的要求來禁用按鈕。
我正在使用Primefaces 5.1
這是我提出的解決方案。
我使用widgetVar
來檢查選定的行數並啓用/禁用命令按鈕。
從Primefaces記錄我們有一個數據表客戶端API:
而且我們有命令按鈕客戶端API
現在我們會回來到實施部分
<p:dataTable var="line" varStatus="loop"
value="#{myexpense.lazyModel}" paginator="true"
rows="#{myexpense.rows}"
rendered="#{myexpense.userIdSearch eq null}"
rowIndexVar="row"
emptyMessage="#{tk.expense_table_empty}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
widgetVar="expenseEntryTable"
rowsPerPageTemplate="#{myexpense.rowsPerPageTemplate}"
id="lazyDataTable" lazy="true"
selection="#{myexpense.selectedExpenseEntryList}"
rowKey="#{line.oid}">
<p:ajax event="toggleSelect" oncomplete="disableOrEnableCommandButton();" update="updateBtn"/>
<p:ajax event="rowSelectCheckbox" oncomplete="disableOrEnableCommandButton();" update="updateBtn"/>
<p:ajax event="rowUnselectCheckbox" oncomplete="disableOrEnableCommandButton();" update="updateBtn"/>
<p:column selectionMode="multiple" width="3%" styleClass="centerAlignColumn selectAll" id="selectAll"/>
.... more column
<f:facet name="footer">
<p:commandButton process="lazyDataTable" value="#{tk.expense_update_selected}" partialSubmit="true" ajax="true" widgetVar="updateBtn" disabled="#{myexpense.disableUpdateButton}"
actionListener="#{myexpense.updateSelected}"
update="lazyDataTable @form" rendered="#{myexpense.form.myOnly}" />
</f:facet>
</p:dataTable>
正如你所看到的,我已經定義了2個widgetVar,一個用於數據表(expenseEntryTable),另一個用於命令按鈕(updateBtn)。
另外我定義了disbaled屬性#{myexpense.disableUpdateButton}
,這對頁面加載時會有幫助。
private Boolean disableUpdateButton;
public Boolean getDisableUpdateButton(){
disableUpdateButton = !((selectedExpenseEntryList!=null) && (!selectedExpenseEntryList.isEmpty()));
return disableUpdateButton;
}
現在你可以編寫java腳本。
function disableOrEnableCommandButton() {
if (PrimeFaces.widgets['expenseEntryTable']) {
if (PF('expenseEntryTable').getSelectedRowsCount() > 0) {
PF('updateBtn').enable();
} else {
PF('updateBtn').disable();
}
}
}
希望它可以幫助任何人!
如何使用''<:p:ajax event =「rowSelect」'或其他事件看看這個例子http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf – Daniel 2012-07-23 10:30:50
它不起作用。 我想要做的與基於複選框的選擇示例(http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionRadioCheckbox.jsf)相同;但使用文檔(Primefaces用戶指南v3.3) – webmeiker 2012-07-24 08:48:43
中的rowSelectCheckbox和rowUnselectcheckbox事件,那麼爲什麼不使用類似這樣的東西?
Daniel 2012-07-24 09:02:09