SelectOneRadio

0 respostas
S

o problema é que ao selecionar, consigo selecionar mais de um, não fazendo sentido a questão do radio...
Vejam se isso é o bastante.
A ideia é que no dataTable possa haver um radiobutton, onde através dele pudesse submeter um receptor a um atendimento:

<rich:popupPanel id="modalPanelReceptor" modal="false" width="600"
            moveable="false">

            <f:facet name="header">
                <h:outputText value="Defina o Receptor"></h:outputText>
            </f:facet>

            <f:facet name="controls">
                <h:outputLink value="#" style="text-decoration:none;"
                    onclick="#{rich:component('modalPanelReceptor')}.hide(); return false;">X</h:outputLink>
            </f:facet>

            <rich:dataTable value="#{atendimentoBean.listaReceptores}"
                sortMode="single" var="_receptor" style="width: 100%;"
                binding="#{atendimentoBean.uiDataTable}"
                noDataLabel="Não existem receptores cadastrados." rowKeyVar="index">

                <rich:column width="40%">
                    <f:facet name="header">
                        <h:outputText value="Selecione" />
                    </f:facet>
                    <h:se
                   
                    ><h:selectOneRadio onclick="dataTableSelectOneRadio(this);"
                        valueChangeListener="#{atendimentoBean.setReceptorSelecionado}"
                        value="#{atendimentoBean.atendimentoEdicao.receptor}"
                        converter="receptorConverter">
                        <a4j:ajax></a4j:ajax>
                        <f:ajax execute="@this" render="@form"></f:ajax>
                        <f:selectItem itemValue="#{_receptor}">
                        </f:selectItem>
                    </h:selectOneRadio>
                </rich:column>
                <rich:column width="40%">
                    <f:facet name="header">
                        <h:outputText value="Nome do receptor" />
                    </f:facet>
                    <h:outputText value="#{_receptor.nomeReceptor}"></h:outputText>
                </rich:column>

                <rich:column width="25%">
                    <f:facet name="header">
                        <h:outputText value="Tipo sanguíneo do receptor" />
                    </f:facet>
                    <h:outputText value="#{_receptor.tipoSanguineo}"></h:outputText>
                </rich:column>

                <rich:column width="25%">
                    <f:facet name="header">
                        <h:outputText value="Tipo Hemoderivado do receptor" />
                    </f:facet>
                    <h:outputText value="#{_receptor.tipoHemo}"></h:outputText>
                </rich:column>



            </rich:dataTable>
            <a4j:commandButton value="OK"
                onclick="#{rich:component('modalPanelReceptor')}.hide(); return
false;" />
        </rich:popupPanel>

e através disto pudesse obtê-lo:

public void setReceptorSelecionado(ValueChangeEvent event) {
        receptorSelecionado = (Receptor) uiDataTable.getRowData();
        System.out.println(receptorSelecionado);
        listaReceptores = new ArrayList<Receptor>();
        listaReceptores.add(receptorSelecionado);
    }
é isto que ocorre - selecionar mais de um, onde gostaria que selecionasse apenas um e não mais de um como acontece. para tentar resolver o problema tentei isso:
<h:outputScript name="modal.js" library="js" target="head" />
function dataTableSelectOneRadio(radio) {
	var radioId = radio.name.substring(radio.name.lastIndexOf(':'));

	for ( var i = 0; i < radio.form.elements.length; i++) {
		var element = radio.form.elements[i];

		if (element.name.substring(element.name.lastIndexOf(':')) == radioId) {
			element.checked = false;
		}
	}

	radio.checked = true;
}
mas sem sucesso. Podem ajudar?
Criado 22 de dezembro de 2012
Respostas 0
Participantes 1