Pesquisa Generica

19/05/2008

0

Olá a todos!

Estou tentando fazer uma pesquisa genérica para usar em todas as telas do meu sistema, seria uma tela popup que retornaria a chave primaria do registro escolhido. Até ai tudo bem, mas quando eu retorno a Chave para a tela que chamou eu precisaria realizar uma consulta completa no banco e então trazer todos os campos na tela, mas usando java script não consigo disparar a minha rotina que retorna todos os campos, baseada na chave que escolhi. Eu poderia colocar um botão mas então o usuário teria dois trabalhos o de clicar no item pesquisado e depois no botão ´carregar´ para preencher todos os campos (arghhhh..) Eu poderia retornar tudo com variáveis de sessão mas ai a minha tela de pesquisa deixaria de ser genérica. :(

Alguém tem alguma solução? Que meios vc´s nas telas de pesquisa?
Afinal dá pra disparar uma função code Behind com Java Script?
ou o jeito é usar um botão (Arghhhh..) carregar?


:?: :?: :?:


Hal9000

Hal9000

Responder

Posts

20/05/2008

Ricardo Silva

Veio tem que fazer isto usando ajax...

a Microsoft tem um pacote as.net Ajax que faz isso
www.asp.net

se naum me engano vc faz uma metodo servido (WebMethod) estatica no code Behind e em javaScript vc utiliza o PageMethods para chamar seu metodo servidor e consumilo.
é que estou com presa... se interesa eu te explico mais tarde.

entra no site acima e da uma pesquisada...

na duvida soh posta


Responder

26/05/2008

Hal9000

Então...

Dei uma pesquisada nos Web Service e Web Methods, não não achei nada relativo a disparar o Code-Behind. meu problema é que eu quero passar só a PK da tela de pesquisa que seria uma PopUp para a tela que a chamou. Mas então eu preciso fazer uma pesquisa para carregar os dados na tela principal assim que eu fechar minha tela de pesquisa. Ohhhh Vida. no Desktop isso é tão facil :(

Será que não tem nenhum link com um exemplo de como se pode fazer isso? Continuo procurando...


Responder

26/05/2008

Ricardo Silva

no começo era dificil de entender.... axava que burlava a Orientação Objeto
Mas depois eu li e reli, depois li denovo estes dois pote
da uma lida nesles, se naum entr]ender le denovo.... ajuda pra karalh..
http://imasters.uol.com.br/artigo/7951/ajax/passando_um_dataset_do_aspnet_para_o_javascript/

http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1275

na duvida soh posta


Responder

26/05/2008

Hal9000

Olá RicaJedidia

Eu acho que vou ficar louco de tando ler rs...

Gostei desse link sobre a passagem do DataSet vou ver com mais calma, mas fiquei preocupado com uma coisa agora. Eu pretendo fazer uma rotina genérica para pesquisa então seria uma página com um grid que receberia um SQL para preencher um grid sempre com dois parametros ´Código´ , ´Descrição´ e teria um botão select para eu Capturar a Pk do campo e então disparar uma função que carregaria os campos na tela que chamou o PopUp. Perfeito! Mas...

Me toquei agora: Como eu vou disparar uma função na minha popup se sendo que essa função tá na página que a chamou?!? Minha esperança era a de usar o PostBack, mas testei e quando fecho o PopUp ele não gera um PostBack na página que chamou. :(

Eu poderia centralizar todas as minhas buscas na minha página de pesquisa, mas... (arghhhh...)

Vc tem ideia do que eu teria que usar para disparar a função que está na outra página?!?

Agora tb não vou desistir! Tenho que fazer esse negocio funcionar!!! Mas sem gambiarra rs...


Responder

26/05/2008

Ricardo Silva

como diz meu prof....
´Amiguinhuuu....´ existe um metodo nas paginas Filhos (popUp) que podem xamar o dom da pagina pai.

se eu naum estou enganado é assim:
window.opener.document.forms[0].TextBox1.value = "pagina PopUp"


desculpe se estiver errado... mas procura algo sobre ´window.opner´ q vc se da bem....

Ah e ler vc vai ter q ler mesmuuu naum tem outro geito... a não ser se vc tercerizar - fora de cogitação neh....

na duvida soh posta


Responder

26/05/2008

Hal9000

Opa!

Não, não esse metodo eu conheço e uso:
´window.opener.document.forms[0].TextBox1.value = ´pagina PopUp´

A atribuição de valor não me adianta. Eu preciso é quando fechar meu PopUp disparar uma função que está no form que chamou o PopUp Originalmente.

Exemplo:

Tenho um Botão Pesquisar no form Cliente que abre um popup com minha pesquisa genérica. quando eu escolho um cliente no popup eu recupero a PK dele, e disparo uma Função lá no meu form cliente que vai fazer uma pesquisa no banco e recuperar todos os dados na tela.

O problema é como disparar essa função? Eu poderia fazer um teste com uma variável de sessão no load da pagina cliente, mas o fechamento do popup não faz a pagina cliente executar um post back.

De volta a prancheta... Alguma idéia? :(


Responder

29/05/2008

Hal9000

Poxa ninguém tem idéia de como fazer isso?!? :(


Responder

30/05/2008

Burnbr

Cara tente ver um pouco de Ajax para ver se resolve
Att


Responder

01/06/2008

Hal9000

Provavelmente vou ter que usar Page Methods, mas ainda tenho o problema de: Como chamar um page method da pagina que chamou o pop, estando na pagina de pop up :!: :?: :!:

Alguém??? Alguém sabe????


Responder

04/06/2008

Andrecerveira

Sou novo em ASP.NET e AJAX também. 4 meses de exp.

Gostaria de saber se você ja conseguiu resolver este problema. Visto que eu ainda não.

Fico agradecido por ajudas.


Responder

04/06/2008

Andrecerveira

Sou novo em ASP.NET e AJAX também. 4 meses de exp. Gostaria de saber se você ja conseguiu resolver este problema. Visto que eu ainda não. Fico agradecido por ajudas.


Na verdade estava pensando em usar Modal PopUp Extender do AjaxControlToolKit que eh bastante prático e elegante, mas não achei alguma explicação de como abrir página .aspx ao invés de Painel. Alguém sabe me dizer se páginas aspx podem ser abertas no conteúdo do Modal PopUp Extender?


Responder

05/06/2008

Ricardo Silva

o q se pode fazer é um controle personalizado.
e adicionar dinamicamente. não me pergunte como fazer isso... cada caso um caso.
e o Modal PopUp Extender tem uma propriedade de Dispose, q vc pode disparar qlqr PageMethods.

estuda lah...


Responder

05/06/2008

Hal9000

O Gente! Não sabia que o ModalPopup podia abrir página Aspx... Vou testar e assim que conferir os resultados eu posto aqui...

Ohhhh! A solução se aproxima... Tomara.. :)


Responder

05/06/2008

Andrecerveira

Então o Modal PopUp Extender não permite que outra página .aspx seja aberta como conteúdo dele, apenas controle personalizado?


Responder

09/06/2008

Andrecerveira

Hal. Eu fiz o seguinte e tive um bom resultado.
Abri meu popUp utilizando o seguinte código no evento click do botão da página chamadora (pagina1.aspx):

protected void btnSacBusca_Click(object sender, ImageClickEventArgs e)
{
string Jscript;
Jscript = ´<script type=´text/javascript´ language=´javascript´>´ + ´window.open(´pagina2.aspx?chamada = pagina1´,´_Nome´,´width=614,height=510,left=270,top=100´) </script>´;
ClientScript.RegisterStartupScript(GetType(), ´abrirjanela´, Jscript, false);
}

Ao invés de utilizar passagem de parâmetros por queryString (?chamada = pagina1) poderia alimentar uma variável de sessão.

Quando abro a página2.aspx neste popUp, o evento Page_Load da mesma faz uma verificação se é postBack ou não.
Se não for, significa que alguma foi aberto pela primeira vez.

if(!this.IsPostBack)
{
if ((Request[´chamada´] == null) == false) //verifica se existe a passagem de parâmetro por queryString. Foi bom para eu fazer esta verificação pois esta página eu também abro sem ser em popUp. E quando abro diretamente não preciso informar quem foi a página chamadora.
//Se for ter que verificar a SESSION eu utilizaria desta forma
{
if(Request[´chamada´].ToString() == ´pagina1´)
//if (Session[´Chamada´].ToString() == ´pagina1´)
{
//aqui mesmo eu executo alguns métodos como uma busca através de um parâmetro que vem da primeira página.
}
}
...
}
...


//Evento do botão OK que retorna para a página chamadora (pagina1)
protected void btnOK_Click(object sender, EventArgs e)
{
if ((Request[´chamada´] == null) == false)
{
if(Request[´chamada´].ToString() == ´pagina1´)
{
//aqui chamo o método que você estava precisando chamar e que estava presente na págna1.aspx
//Na verdade não entendi se este método está em uma classe. Se está no form aspx ou mesmo se é um método estático.
//No meu caso ficou mais organizado manter este método aqui no form pagina2.aspx do que presente na página1.aspx. com oestava antes.

//aqui executo o método como por exemplo:
variavel1 = buscaNomeCliente(cpfCliente);
variavel2 = buscaEnderecoCliente(CEPCliente);


//para retornar para a página chamadora (pagina1.aspx) utilizei JavaScript


string strScript = ´<script>window.opener.document.getElementById(´ctl00$ContentPlaceHolder1$txtNomeCliente´).value = ´´;
strScript += variavel1;
strScript += ´´;window.opener.document.getElementById(´ctl00$ContentPlaceHolder1$txtEnderecoCliente´).value = ´´;
strScript += variavel2;
strScript += ´´;self.close()´;
strScript += ´</script>´;
ClientScript.RegisterClientScriptBlock(GetType(), ´teste´, strScript);
}
}

Neste meu script window.opener eu consegui apenas popular na página chamadora (pagina1) controles do tipo TextBox.
Creio que exista algum comando javascript que deva ser inserido ou modficado na linha window.opener.document... que popule labels.

Bom, descrevi aqui atualmente como consegui CONTORNAR o problema descrito acima por você e por mim.

Poxa, espero ter ajudado mas, caso alguém tenha uma solução mais elegante, por favor, não deixem de postar.

Falow. Até mais.

André Cerveira.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar