none
Retornar o conteúdo de uma página para a página chamadora RRS feed

  • Pergunta

  • <object height="0" id="ea58cb0b-d8fb-8a88-0a7b-68b9288b8ab9" type="application/gas-events-cef" width="0"></object>

    Boa tarde pessoal, alguém pode me auxiliar com essa dúvida...

    no site http://www.macoratti.net/07/09/aspn_ujs2.htm tem exatamente o que preciso no entanto não funciona, como estou utilizando masterpager não rola 100% veja o meu código que está na página popup:

     string jscript = "";
     jscript += "<script language='JavaScript'>";
     jscript += ";window.opener.document.ctl00$MainContent$DDLCliente.SelectValue= ";
    jscript += ukeyempresa.ToString();
    jscript += "';window.close();";
    jscript += "</script>";
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Combo", jscript);
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "fechar","<script>self.close();</script>");                   	

    Ele fecha a página ok, no entanto o que eu preciso eh que fique selecionado o dropdown com o retorno do javascript na página chamadora, o q está errado ou faltando???
    Desde já agradeço,


    Abs, Adriano_SP

    segunda-feira, 15 de julho de 2013 19:38

Respostas

  • tenta forçar um submit no form da pagina 'abridora'

    window.opener.document.form[1].submit();


    Microsoft Community Contributor

    • Marcado como Resposta Adriano_SP terça-feira, 16 de julho de 2013 14:00
    terça-feira, 16 de julho de 2013 13:31
    Moderador

Todas as Respostas

  • Acontece que voce esta chamando um propriedade "server-side" (a SelectValue do control asp.net dropdownlist) no javascript...

    O javascript só enxerga componente html (select)



    Microsoft Community Contributor

    segunda-feira, 15 de julho de 2013 20:01
    Moderador
  • Como ficaria na mesma pagina (tem q ajustar para chamar o metodo em outra pagina)

        <form id="form1" runat="server">
        <script type="text/javascript">
            function SelectByValue(v) {
                var combo = document.getElementById("comboTeste");
                for (var i = 0; i < combo.length; i++) {
                    combo.options[i].selected = (combo.options[i].value == v)
                }
            }
        </script>
        <select id="comboTeste" name="meuCombo">
            <option value="a">aaaa</option>
            <option value="b">bbbbbb</option>
            <option value="c">ccccccc</option>
        </select>
        <input type="button" name="teste" value="select" onclick="SelectByValue('b');" />
        </form>


    Microsoft Community Contributor

    segunda-feira, 15 de julho de 2013 20:11
    Moderador
  • Xiii.... num entendi Rui.... mas vou pesquisar mais sobre o assunto tb...

    Abs, Adriano_SP

    segunda-feira, 15 de julho de 2013 20:19
  • Pessoal..... tô quase chegando lá...

      string jscript = "";
       jscript += "<script language='JavaScript'>";
       jscript += ";window.opener.document.getElementById('MainContent_DDLCliente').value = '";
      jscript += ukeyempresa;
      jscript += "'; self.close();";
      jscript += "</script>";
      Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "fechar", jscript);

    No entanto no meu aspx principal ele seta corretamente o dropdown DDLCliente, mas como faço pra preencher outros dois dropdown que depende do primeiro e ele não faz um refresh e os dois dropdown não funciona corretamente, eis o código :

    no evento do:
     protected void DDLCliente_TextChanged(object sender, EventArgs e)
     dt = dao_cli.EndClienteByUkey(int.Parse(DDLCliente.SelectedItem.Value.ToString()));

    faço o link com o datasource e databind() etc...

    Alguém teria alguma idéia ??
    Pois a propriedade do
    DDLCliente_TextChanged só atualizo quando altero as opções da dropdown.

    Desde já agradeço,


    Abs, Adriano_SP

    segunda-feira, 15 de julho de 2013 22:35
  • Oi...

    Deixa eu tentar explicar... quando voce coloca uma tag <asp:DropDownListBox runat=server> essa tag é um objeto server side... isso é... voce vai manipular no lado do servidor dentro do seu codigo C#...

    quando voce roda a pagina e visualiza o codigo fonte pelo seu browser voce vai ver que no lugar aparece uma tag <select>...</select> no lugar.... que o controle html de lista de seleçao....

    o Java script so acessa elemento html puro... e nao os objetos no formato <asp:...>

    por isso quando voce faz: 

    script += ";window.opener.document.ctl00$MainContent$DDLCliente.SelectValue= ";

    Não vai acontecer nada, porque para o JavaScript o elemento "ctl00$MainContent$DDLCliente" nao possui uma propriedade "SelectedValue";

    Agora se voce continuar o codigo fonte html do seu browser, vai percerber que alem da tag <select>... sao criadas as tags <options>... e sao elas que voce quer acessar...

    entao... voce nao tem acesso pelo javascritp a propriedade do c# "SelectedValue".... mas tem acesso a propriedade html "options" que é a lista de options de seu combobox...

    Entao o que eu fiz foi dar um exemplo de como selecionar um item de um combo html usado o valor da propriedade "value" dos options... mais ou menos o mesmo que o "SelectedValue" faz...

    entao se voce criar o metodo SelectByValue que eu criei acima na sua pagina "opener" voce poderia setar o valor na pagina filho mais ou menos assim:

    "window.opener.documento.SelectByValue('" + valor + "');"


    Microsoft Community Contributor

    segunda-feira, 15 de julho de 2013 22:35
    Moderador
  • tenta forçar um submit no form da pagina 'abridora'

    window.opener.document.form[1].submit();


    Microsoft Community Contributor

    • Marcado como Resposta Adriano_SP terça-feira, 16 de julho de 2013 14:00
    terça-feira, 16 de julho de 2013 13:31
    Moderador
  • Rui, Show de bola era isso mesmo !!!! Muito Obrigado!

    Abs, Adriano_SP

    terça-feira, 16 de julho de 2013 13:59