Usando PrimeFaces como janela filha

Tenho uma apalicaçao que é em JSF com suas janelas de cadastro e gostaria de usar o componente do PrimeFaces (Dialogs) para criar uma janela de pesquisa, como se fosse um popup.

estou usando da seguinte maneira:

<p:commandButton value="Pesquisa" onclick="dlg2.show();" type="button"/>
<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
	<h:form>
		<h:panelGrid binding="#{transacaoPesquisaFornecedor.tela}"/>
    	<h:dataTable binding="#{transacaoPesquisaFornecedor.gridPesquisa}"/>
    </h:form>
</p:dialog>	

para chamada da minha tela de pequisa e a grid onde apresenta os resultados. O nome do meu xhtml é pagina.xhtml

public String botaoAtualiza() throws SQLException {
		AtualizaDados();
		return "pagina";
	}

Metodo em que o botao para pesquisar é chamado. O AtualizaDados() é onde é feito toda parte de pesquisa, sql e tudo mais, ou seja, chama o metodo AtualizaDados(), faz a pesquisa em banco e apresenta na table. Simples, consigo fazer isso em uma tela normal, no usando o “p:dialog”, porém se eu usar na hora em que é feita a pesquisa (clicado no botao) tudo é executado, mas atualiza a table.

Alguem sabe o que poderia estar de errado? Estou usando esse componente pela primeira vez.

Na view:

<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
    <h:form>
        <h:outputLabel for="term" value="Busca:" />
        <h:inputText id="term" value="#{searcher.term}" />
        <p:commandButton value="Buscar" action="#{searcher.search}" update="result" />

        <p:dataTable value="#{searcher.result}" var="item">
            <p:column>
                <f:facet name="header">Id</f:facet>
                #{item.id}
            </p:column>
            <p:column>
                <f:facet name="header">Nome</f:facet>
                #{item.name}
            </p:column>
        </p:dataTable>
    </h:form>
</p:dialog>
<p:button value="Pesquisa" onclick="dlg2.show()" />

No ManagedBean:

@ManagedBean
@RequestScoped
public class Searcher {

    private String term;
    private List<Items> result;

    public String getTerm() { return term; }
    public void setTerm(String term) { this.term = term; }

    public List<Item> getResult() { return result; }

    public void search() {
        // código da busca...
        result = // o resultado da busca que você fez.
    }

}

Esse código não foi testado mas deve funcionar.

Então fiz como o exemplo dado.

<p:commandButton value="Modal" onclick="dlg2.show();" type="button"/> 
<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="200">
    <h:form>
        <h:outputLabel for="term" value="Busca:" />
        <h:inputText id="term" value="#{transacaoPesquisa.pesquisar}" />
        <p:commandButton value="Buscar" action="#{transacaoPesquisa.botaoAtualiza}" update="result" />

        <p:dataTable var="for" value="#{transacaoPesquisa.result}">
        <f:facet name="header">
            Pesquisa Fornecedor
        </f:facet>

        <p:column>
            <f:facet name="header">
                <h:outputText value="Código" />
            </f:facet>
            <h:outputText value="#{for.codigo}" />
        </p:column>

        <p:column>
            <f:facet name="header">
                <h:outputText value="Nome" />
            </f:facet>
            <h:outputText value="#{for.nome}" />
        </p:column>
    </p:dataTable>
    </h:form>
</p:dialog>
@ManagedBean
@RequestScoped
public class TransacaoPesquisa {
	private CamposPesquisaFornecedor campo = new CamposPesquisaFornecedor();
	private ArrayList<CamposPesquisaFornecedor> campos = new ArrayList<CamposPesquisaFornecedor>();
	private String pesquisar = "";

public String getPesquisar() {
		return pesquisar;
	}

	public void setPesquisar(String pesquisar) {
		this.pesquisar = pesquisar;
	}

	public CamposPesquisaFornecedor getCampo() {
		return campo;
	}

	public void setCampo(CamposPesquisaFornecedor campo) {
		this.campo = campo;
	}

	public ArrayList<CamposPesquisaFornecedor> getCampos() {
		return campos;
	}

	public void setCampos(ArrayList<CamposPesquisaFornecedor> campos) {
		this.campos = campos;
	}

public void botaoAtualiza() throws SQLException {
		AtualizaDados();
		getResult();
	}

	public ArrayList<CamposPesquisaFornecedor> getResult() throws SQLException {
		AtualizaDados();
		return campos;
	}

	public void AtualizaDados() throws SQLException {
              //aqui o processo de atualizar, fazer a pesquisa com o sqls e tudo mais...onde alimenta os campos..

              while (rs.next()) {
				campo = new CamposPesquisaFornecedor();
				campo.setCodigo(rs.getInt("codigo"));
				campo.setNome(rs.getString("nome"));
				campos.add(campo);
		}
        }

O Grande detalhe, funciona a pesquisa a tela e tudo mais, porém a pesquisa so funciona se eu der um “Enter” se clicar nao atualiza, e se eu der um “Enter” fecha o meu dialog e volta a tela normal, ai quando eu abro novamente, tem a pesquisa feita.
Alguma maneira de quando pressionar o Enter ou clickar que faça a atualizaçao da table sem fechar o dialog?

já tentei colocar:

OnKeyDown="if(event.keyCode==13) {event.keyCode=9}"

tanto no botao quanto no text de pesquisa, mas fazendo isso, nao pesquisa, nao fecha a janela, nao faz nada :S