Mas usando um evento de um commandButton é possível setar o valor na coluna em questão para filtrar a tabela? Se der pra fazer assim, claro que pode ser! Mas não sei como.
Mike
O código abaixa altera o valor de idade para 100 ao clicar no botao, então se o atributo usado para filtrar for a idade, filtrara os objetos q tem a idade 100
Caso eu não tenha selecionado nenhuma linha da Datatable, é lançada a Exception:
javax.el.PropertyNotFoundException: /WEB-INF/include/entity/demandas/List.xhtml @24,116 target="#{demandasController.selected.situacao.idSituacao}": Target Unreachable, 'null' returned null
E mesmo selecionando alguma linha da Datatable, ao clicar no commandButton, nada acontece.
Alguma dica?
jMarcel
Eu consegui obter o resultado desejado usando JQuery:
<p:commandLinkid="filterLink"value="Click para Filtrar"onclick="$('#MyFormID\\:MyDatatableID\\:MyColumnID\\:filter').val('123'); PF('wv').filter();"/>
Porém, o código acima funciona apenas para colunas que tem um campo input text, onde o user digita algum valor para filtrar a tabela.
Mas, conforme perguntei no início, preciso setar um valor padrão numa lista de valores (listValues) exibida através do componente p:selectCheckboxMenu.
Por favor, alguém sabe como faço para setar um valor padrão em um componente p:selectCheckboxMenu usando JQuery ? Se alguém quiser apresentar outra solução, será muto bem-vinda.
Oi Mike! Tentei conforme você colocou, mas aconteceu a mesma coisa: se não seleciono alguma linha na datatable, lança a Exception; se seleciono, nada acontece
Só fiz uma pequena correção no seu último código, trocando o widgetvar demandasTable do update pelo id da datatable, que está definido como MyDatatableID
Ah sim, eu passei o id ao invés do widget var (errei)
Coloca process="@this" no commandButton que a exceção deve parar
Mike
Só para ver se eu realmente entendi:
Você quer clicar em um botão e esse botao mandar um valor para um campo que será utilizado como filtro?
jMarcel
Coloquei Mike, mas continuou a mesma coisa.
jMarcel
Isso, eu quero clicar em um botão e a tabela ser filtrada com um valor (hard coded mesmo) definido no código.
Com o código abaixo, eu clico no botão, ele preenche automagicamente o input text da coluna (MyColumnID) com o valor 123 e em seguida filtra a tabela (wv) com esse valor:
<p:commandLinkid="filterLink"value="Click para Filtrar"onclick="$('#MyFormID\\:MyDatatableID\\:MyColumnID\\:filter').val('123'); PF('wv').filter();"/>
Só preciso saber como setar o valor num componente p:selectcheckboxmenu .
Mike
Tenha duas listas, uma com todos os elementos e outra com os que você quer deixar previamente adicionada
Mike, eu tentei, mas não consegui resolver porque começou a dar outras Exceptions.
Mas felizmente consegui resolver da maneira mais fácil via JQuery, que é como eu pretendia. Veja a solução abaixo.
De qualquer forma, agradeço muito pela sua ajuda, e posso dizer que aprendi mais essa forma com setPropertyActionListener.
jMarcel1 like
Na coluna onde tem o selectCheckboxMenu:
<p:selectCheckboxMenu id="MyBoxID" ... />
No commandButton:
<p:commandButton value="click to filter" onclick=" $('#MyFormID\\:MyDatatableID\\:MyBoxID\\:1').click(); PF('MyDatatableWidgetVar').filter();" />
Onde ‘1’ é o índice da lista referente às opções correspondentes ao valor pelo qual eu quero filtrar.
Mike
Obrigado pelo retorno @jMarcel
O setPropertyActionListener é bem simples e eficiente quando desejamos alterar o valor de um atributo do bean, tem o f:param que armazena um valor na sessão, ambos uteis.
Com jquery eu não pudi te ajudar, js é meu ponto fraco haha. To estudando ele esses dias
Obrigado por postar a solução, com certeza ajudará vários, já que praticamente não ha nada a respeito de selectCheckboxMenu