Pegar conteudo de um datatable JSF em modalPanel

1 resposta
leonardobrancalhao

Ola pessoal, sei que existe varios topicos para a citada duvida porem não consegui resolver meu problema com nenhum deles :?

Seguinte, tenho um datatable que esta exibindo corretamente os registros,

porem eu gostaria de quando clicar na imagem “Alterar” abrisse um modalPanel com o conteudo da linha clicada para poder alterar.

teste a:link { color: #000000; font: bold; }

//AQUI JA TENTEI COM TAMBEM

Antecipo meus agradecimentos !!

1 Resposta

francis.junio

vou deixar um exemplo meu aki que funciona.
OBS.: QUANDO VOCÊ FOR COLOCAR CODIGO NO SEU POST, PROCURE USAR A TAG PARA FICAR MELHOR O INTENDIMENTO.

Codigo da minha table

<a4j:form>
<rich:dataTable width="99%"
					style="text-align:center; font-family:verdana; font-size:11px"
					id="tableUsuario" value="#{usuarioMB.dt}" var="dt" reRender="ds">
					<f:facet name="header">
						<rich:columnGroup>
							<rich:column colspan="8">
								<h:outputText value="#{msg.usuarios}" />
							</rich:column>
							<rich:column breakBefore="true">
								<h:outputText value="#{msg.nome}" />
							</rich:column>							 
							<rich:column>
								<h:outputText value="#{msg.departamento}" />
							</rich:column>							
							<rich:column>
								<h:outputText value="#{msg.usuario}" />
							</rich:column>
							<rich:column>
								<h:outputText value="#{msg.ativado}" />
							</rich:column>
							<rich:column>
								<h:outputText value="#{msg.accessAdmin}" />
							</rich:column>
							<rich:column>
								<h:outputText value="#{msg.accessConfig}" />
							</rich:column>
							<rich:column>
								<h:outputText value="#{msg.accessTratamento}" />
							</rich:column>
							<rich:column>
								<h:outputText value="#{msg.controles}" />
							</rich:column>
						</rich:columnGroup>
					</f:facet>
					<rich:column>
						<h:outputText value="#{dt.userName}" />
					</rich:column>			
					<rich:column>
						<h:outputText value="#{dt.department}" />
					</rich:column>					
					<rich:column>
						<h:outputText value="#{dt.user}" />
					</rich:column>
					<rich:column>
						<h:graphicImage url="/images/positivo.PNG" rendered="#{dt.status}" />
						<h:graphicImage url="/images/negativo.PNG"
							rendered="#{!dt.status}" />
					</rich:column>
					<rich:column>
						<h:graphicImage url="/images/positivo.PNG"
							rendered="#{dt.acessAdm}" />
						<h:graphicImage url="/images/negativo.PNG"
							rendered="#{!dt.acessAdm}" />
					</rich:column>
					<rich:column>
						<h:graphicImage url="/images/positivo.PNG"
							rendered="#{dt.acessConf}" />
						<h:graphicImage url="/images/negativo.PNG"
							rendered="#{!dt.acessConf}" />
					</rich:column>
					<rich:column>
						<h:graphicImage url="/images/positivo.PNG"
							rendered="#{dt.acessTratamento}" />
						<h:graphicImage url="/images/negativo.PNG"
							rendered="#{!dt.acessTratamento}" />
					</rich:column>
					<rich:column>
                                                //no click dessa imagem, abre o modal com o objeto que foi clicado na linha.
						<a4j:commandLink id="editar" title="#{msg.editar}"
							action="#{usuarioMB.editUser}" reRender="formUsu"
							oncomplete="Richfaces.showModalPanel('modalUsuario')">
							<h:graphicImage id="imageEdit" url="/images/editar.png"
								style="border:0" />
						</a4j:commandLink>
						<rich:spacer width="7" />
						<a4j:commandLink id="excluir" title="#{msg.excluir}"
							action="#{usuarioMB.excluirUser}" reRender="formTable">
							<h:graphicImage id="imageExcluir" url="/images/delete.png"
								style="border:0" />
						</a4j:commandLink>
					</rich:column>
					<f:facet name="footer">
						<rich:datascroller id="ds" renderIfSinglePage="false"></rich:datascroller>
					</f:facet>
				</rich:dataTable>
			</a4j:form>

			<f:subview id="modal">
				<a4j:include viewId="modalUsuario.xhtml" />
			</f:subview>

modal que sera aberto quando clicar na imagem da linha.

<f:view>
	<rich:modalPanel id="modalUsuario" autosized="true">
		<f:facet name="header">
			<h:panelGroup>
				<h:outputText value="Cadastro de Usuário"></h:outputText>
			</h:panelGroup>
		</f:facet>
		<f:facet name="controls">
			<h:panelGroup>
				<h:graphicImage value="/images/close.png" id="hidelink"
					title="Close" />
				<rich:componentControl for="modalUsuario" attachTo="hidelink"
					operation="hide" event="onclick" />
			</h:panelGroup>
		</f:facet>
		<h:form id="formUsu">
			<rich:toolBar id="mainBar" height="26" itemSeparator="line"
				style="font: normal 10pt Arial;">
				<rich:toolBarGroup location="left">
					<a4j:commandLink id="linkNovo" title="Novo"
						action="#{usuarioMB.novo}" reRender="formUsu" ajaxSingle="true">
						<h:graphicImage id="imageNovo" url="/images/page_white.png"
							style="border:0; height: 17px;" />
					</a4j:commandLink>
				</rich:toolBarGroup>

				<rich:toolBarGroup location="left">
					<a4j:commandLink id="linkSalvar" title="Salvar"
						action="#{usuarioMB.salvar}">
						<h:graphicImage id="imageSalvar" url="/images/disk.png"
							style="border:0; height: 17px;" />
					</a4j:commandLink>
				</rich:toolBarGroup>
			</rich:toolBar>

			<rich:spacer width="100%" height="10" />

			<h:panelGrid columns="2" border="0"
				style="font-family:verdana; font-size:11px; text-align:right">
				<h:outputText value="#{msg.nome}:" />
				<h:inputText value="#{usuarioMB.handUser.userName}" required="true"
					label=" Campo Nome" style="width:250px" />
				<h:outputText value="#{msg.departamento}:" />
				<h:panelGrid columns="2" border="0" cellspacing="0">
					<h:inputText value="#{usuarioMB.handUser.department}"
						required="true" label=" Campo Departamento" />
					<a4j:commandLink id="btnPesq" title="Pesquisar"
						action="#{pesquisaDepartment.destroy}"
						oncomplete="Richfaces.showModalPanel('panel')" reRender="panel"
						ajaxSingle="true">
						<h:graphicImage id="imageDP" url="/images/search.gif"
							style="border:0; height: 17px;" />
					</a4j:commandLink>
				</h:panelGrid>
				<h:outputLabel value="#{msg.usuario}:" />
				<h:inputText style="width: 250px;"
					value="#{usuarioMB.handUser.user}" size="15" required="true"
					id="usuario" label=" Campo Usuario" />
				<h:outputLabel value="#{msg.senha}:" />
				<h:inputSecret style="width: 250px;" redisplay="true"
					value="#{usuarioMB.handUser.userPwd}" label="Campo Senha" size="15"
					required="true" id="senha" />
				<h:outputLabel value="#{msg.confirmSenha}:" />
				<h:inputSecret value="#{usuarioMB.confirmPWD}" style="width: 250px;"
					label=" Campo Confirma Senha" size="15" id="Confirmasenha" />
			</h:panelGrid>
			<rich:spacer width="100%" height="20" />
			<h:panelGrid columns="2" border="0"
				style="font-family:verdana; font-size:11px; width: 381px; ">
				<h:column>
					<h:selectBooleanCheckbox value="#{usuarioMB.handUser.status}" />
					<h:outputText value="#{msg.ativado}" />
				</h:column>
				<h:column>
					<h:selectBooleanCheckbox value="#{usuarioMB.handUser.acessConf}" />
					<h:outputText value="#{msg.appConfig}" />
				</h:column>
				<h:column>
					<h:selectBooleanCheckbox value="#{usuarioMB.handUser.acessAdm}" />
					<h:outputText value="#{msg.appAdmin}" />
				</h:column>
				<h:column>
					<h:selectBooleanCheckbox
						value="#{usuarioMB.handUser.acessTratamento}" />
					<h:outputText value="#{msg.appTratamento}" />

				</h:column>
			</h:panelGrid>
		</h:form>

Minha classe Java.

private DataModel dt;
private List<Usuario> list;
//GETTER AND SETTER DO dt
public DataModel getDt() {
		dt = new ListDataModel(list);
		return dt;
	}

	public void setDt(DataModel dt) {
		this.dt = dt;
	}

public void editUser(){
		HandUser user = (HandUser)dt.getRowData();
		if(user !=null)
			this.handUser = user;
	}

abraços.

Criado 16 de junho de 2010
Ultima resposta 13 de jul. de 2010
Respostas 1
Participantes 2