Событие выбора строки RadioButton в p: datatable

Выбор строки на основе RadioButton / Checkbox является распространенным вариантом использования, и DataTable предоставляет решение для этого с функцией режима выбора столбца.

<p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10"
                 selection="#{tableBean.selectedCar}">`
     <f:facet name="header">
            RadioButton Based Selection
        </f:facet>

        <p:column selectionMode="single" />

        <p:column headerText="Model">
            <h:outputText value="#{car.model}" />
        </p:column>

        <p:column headerText="Year">
            <h:outputText value="#{car.year}" />
        </p:column>

        <p:column headerText="Manufacturer">
            <h:outputText value="#{car.manufacturer}" />
        </p:column>


        <f:facet name="footer">
            <p:commandButton value="View" image="ui-icon ui-icon-search"
                             update="displaySingle" oncomplete="singleCarDialog.show()"/>
        </f:facet>
    </p:dataTable>

Я хочу знать, выбираю ли я RadioButton первого столбца, как я получаю для этого событие.

  • Потому что я хочу отключить кнопку при выборе первого столбца или RadioButton последнего столбца.
  • И я также хочу получить индекс столбца при выборе столбца. Теперь я использую selectedCar для сравнения списка и получения индекса столбца. Выглядит некрасиво. Кто-нибудь может мне помочь?

person FishGel    schedule 16.05.2011    source источник
comment
Не совсем понятно, что вы хотите выбрать. Строки или столбцы?   -  person Matt Handy    schedule 16.05.2011
comment
Привет, Мэтт, я хочу выбрать строку с помощью .when добавить ‹p:column selectionMode=single /›, каждый столбец будет иметь радиокнопку, поэтому   -  person FishGel    schedule 16.05.2011
comment
Я добавил ответ, как можно обработать событие выбора строки.   -  person Matt Handy    schedule 16.05.2011
comment
Я хочу знать, как получить событие при выборе RadioButton.   -  person FishGel    schedule 16.05.2011


Ответы (1)


Это решение предназначено только для PrimeFaces ‹= 2.x.

Хороший пример можно найти на презентации Primeface. Существует атрибут rowSelectListener, который можно использовать следующим образом:

rowSelectListener="#{tableBean.onRowSelect}"

и в фоновом компоненте:

public void onRowSelect(SelectEvent event) {  
        FacesMessage msg = new FacesMessage("Car Selected", 
                           ((Car) event.getObject()).getModel());  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
}  
person Matt Handy    schedule 16.05.2011
comment
Но когда я выбираю radioButton и нажимаю кнопку перемещения вверх, метод onRowSelect (событие SelectEvent) не будет вызываться. - person FishGel; 16.05.2011
comment
Если я не использую RadioButton и выбираю только одну строку, будет вызвано событие nRowSelect (событие SelectEvent). - person FishGel; 16.05.2011
comment
Вы можете увидеть дело primefaces.org/showcase/ui/. - person FishGel; 16.05.2011
comment
атрибут selectionMode можно использовать в столбце p:column. - person FishGel; 16.05.2011
comment
@yudong Какая у тебя версия Primefaces? У меня есть документация Primefaces 2.1, и для столбца нет атрибута selectionMode. Но, возможно, это работает для Primefaces 3.0. - person Matt Handy; 16.05.2011
comment
@yudong Слушатель должен быть вызван, если вы нажмете кнопку RadioButton (мгновенный выбор ajax). - person Matt Handy; 16.05.2011
comment
Можете ли вы привести пример о том, что слушатель должен быть вызван, если вы нажмете кнопку RadioButton (мгновенный выбор ajax). Спасибо. - person FishGel; 16.05.2011