Tenho um table, onde eu carrego os dados do meu sql, porem tenho uma pesquisa que gostaria que quando fosse feita, recarregasse com um novo sql
tenho um metodo que retorna uma string, onde eu passo o meu managedbean, mas ele nao recarrega, simplesmente nao faz nada…
public String executaSql(){
return "#{gridAdiantamento.dynamicDataTableGroup}";
}
Ao clicar no botao de pesquisa, faz o processo postback que reconstroi a arvore de objetos, e depois vai pra executacao da minha executaSql(), porem gostaria que recarregasse novamente a tela, mas com novo sql
isso funciona?
Cara pelo que eu entendi, voce quer mostrar os registros do seu banco de dados na JTable depois de uma nova consulta se for isso é facil voce deve zerar os objetos do grid da JTable ( jTable1.setNumRows(0) ). Depois usando os metodos do ResultSet para pegas os registtros da sua consulta e adicionar de um a um na JTable atraves do metodo jTable1.addRow( new OBject []{ coluna1, coluna2}), é claro que coluna 1 e coluna2 sao os atributos de cada registro da consulta.
Entao cara, eu consegui fazer com que recarregasse essa tela, somente a parte do meu table, so mandando recarregar a tela novamente e refazendo o meu ResultSet, mais ou menos como vc indicou acima.
O meu outro problema que estou enfrentando é o seguinte, tenho as minhas colunas do meu Table, e gostaria de adiconar duas ultimas colunas com um HtmlCommandLink, que fizesse o serviço de Alterar e Excluir o registro dessa table. Mas nao to conseguindo fazer com o que esse meu link aceite o meu managedbean, eu clico nele, mas ele nao faz nada, nao leva para lugar algum. Por acaso tem algum exemplo, alguma dica.
Aqui vai o meu codigo que monta a tabela e o HtmlCommandLink (que estou fazendo separadamente para teste):
@ManagedBean
@RequestScoped
@SessionScoped
@ApplicationScoped
@ViewScoped
public class GridTeste extends HtmlDataTable implements ActionListener {
private ResultSetMetaData rsmt;
private String Mb;
public GridTeste(ResultSet campos, String Mb) throws SQLException {
rsmt = campos.getMetaData();
this.Mb = Mb;
populateDynamicDataTable();
}
public void populateDynamicDataTable() throws NullPointerException,
ELException, SQLException {
setVar("line");
setRendered(true);
setColumnClasses(Mb);
// table.setRowClasses("list-row-even,list-row-odd");
setRows(10);
setBorder(1);
getChildren().clear();
// alColumns is an arraylist with names of columns
for (int i = 0; i < rsmt.getColumnCount(); i++) {
// create col
UIColumn col = new UIColumn();
// create the columns value binding
HtmlOutputText colText = new HtmlOutputText();
String columnName = (String) rsmt.getColumnName(i + 1);
String columnBinding = "#{line." + rsmt.getColumnName(i + 1) + "}";
System.out.println(columnBinding);
ValueBinding vBinding = FacesContext.getCurrentInstance()
.getApplication().createValueBinding(columnBinding);
colText.setValueBinding("value", vBinding);
colText.setId("outputText" + i);
col.getChildren().add(colText);
// create col header
HtmlOutputText header = new HtmlOutputText();
header.setId("col" + i);
header.setValue(columnName);
col.setHeader(header);
getChildren().add(col);
}
UIColumn col = new UIColumn();
// create the columns value binding
HtmlCommandLink link = new HtmlCommandLink();
link.setId("seleciona");
link.setValue("Selecionar");
link.setOnclick("setPress('#{transacaoLinhas.selecionaItem}')");
col.getChildren().add(link);
// create col header
HtmlOutputText header = new HtmlOutputText();
header.setId("col3");
header.setValue("Selecionar");
col.setHeader(header);
getChildren().add(col);
}
A minha classe já extende um HtmlDataTable, ou seja todos os atributos eu adiciono direto nela, e a ultima parte é onde eu estou me debatendo para fazer funcionar, que é o meu Link.