Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ds.suporting

DropDownlist com evento abrir em outra janela

Recommended Posts

Olá Pessoal, estou com uma dúvida e já pesquisei mas não consegui achar solução. Preciso listar itens no dropdownlist e quando o usuário clicar em algum item tem que abrir em outra janela, eu já usei o window.open do javascript pra fazer isso mas ele é barrado no bloqueador de popups que o proprio IE tem.

Tem alguma forma de fazer isso com response.redirect ou server.transferer ?

Preciso muito de ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal, estou com uma dúvida e já pesquisei mas não consegui achar solução. Preciso listar itens no dropdownlist e quando o usuário clicar em algum item tem que abrir em outra janela, eu já usei o window.open do javascript pra fazer isso mas ele é barrado no bloqueador de popups que o proprio IE tem.

Tem alguma forma de fazer isso com response.redirect ou server.transferer ?

Preciso muito de ajuda!

 

Bem, se você quiser mesmo fazer por Response.Redirect, tem que assumir a responsabilidade de que a página vai mudar (não é uma janela a mais que vai abrir). É isso mesmo que você quer?

 

OK, lá vai:

 

Primeiramente, no DropdownList, atribua a propriedade AutoPostBack para true e insira os valores que você quer (ou então retire de um banco de dados).

Acesse o evento SelectedIndexChanged e, dentro do código, escreva algo como o seguinte:

Response.Redirect("Item.aspx?conteudo=" + DropDownList1.SelectedItem);

em C#

Response.Redirect("Item.aspx?conteudo=" & DropDownList1.SelectedItem)

em VB

 

Deixe-me explicar:

Como você quer manter o valor selecionado na próxima página, você tem que passá-lo por algum parâmetro, certo? O modo mais econômico que há é passar pela QueryString, botando todas as variáveis que você quiser passar para a outra página no próprio endereço dela. Se quiser colocar mais variáveis é só colocar um ampersand (&) e ir adicionando :)

Para resgatar os valores da QueryString na próxima página, basta escrever o seguinte:

String conteudo = Request.QueryString["conteudo"];

em C#

Dim conteudo As String = Request.QueryString("conteudo")

em VB

 

Aí ele pega o valor da variável "conteúdo" na QueryString e passa para a variável conteudo no code-behind.

 

Facílimo :) Espero ter ajudado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então João isso que você me falou pra fazer eu ja tinha feito, o meu problema é justamente ter que abrir em outra janela, pra você entender o que eu quero tem q ficar igual um que tem na pagina principal do site do hospital são luiz (www.saoluiz.com.br), pois vou listar os outros sites do grupo e tenho que abri-los em outra janela, usei o window.open mas é barrado no bloqueador de popups. atualmente meu codigo está assim:

<script language="javascript">
       function myChangeHandler() {
           var url = document.getElementById('ddlOutrasUnidades').value;
           if (url != '' && url != '#') {
               window.open(this.options[this.selectedIndex].value, 'janela');
               this.form.submit();
           }
       }
 </script>
<form id="myform1" name="myform1" target="_parent" action="pagina.aspx" >
               <div style="background:url(images/bck_outros_hosps.gif) top center no-repeat; width:960px; margin:15px auto; height:25px; padding:15px 0; text-align:center;">
               <p>Conheça os outros hospitais do grupo <strong>Rede D'Or: </strong>
                       <select id="ddlOutrasUnidades" name="ddlOutrasUnidades" class="txt" onchange="myChangeHandler.apply(this)" >
                           <option value="">Selecione</option>
                           <option value="#" ><b>Hospitais em São Paulo</b></option>
                           <option value="http://www.hospitalbrasil.com.br/">- Hospital Brasil</option>
                           <option value="http://www.saoluiz.com.br/">- Hospital São Luiz</option>
                           <option value="#">Hospitais no Rio de Janeiro</option>
                           <option value="http://www.barrador.com.br/" >- Hospital Barra D'Or</option>
                           <option value="http://www.copador.com.br/">- Hospital Copa D'Or</option>
                           <option value="http://www.nortedor.com.br/">- Hospital Norte D'Or</option>
                           <option value="http://www.niteroidor.com.br/">- Hospital Niterói D'Or</option>
                           <option value="http://www.quintador.com.br/">- Hospital Quinta D'Or</option>
                           <option value="http://www.riosdor.com.br/">- Hospital Rios D'Or</option>
                           <option value="http://www.hias.com.br/">- Hospital Albert Sabin</option>
                           <option value="http://www.badim.com.br/">- Hospital Badim</option>
                           <option value="http://www.riosdor.com.br/hospitais-associados/hospital-bangu">- Hospital Bangu</option>
                           <option value="http://www.riosdor.com.br/hospitais-associados/hospital-joari">- Hospital Joari</option>
                           <option value="http://www.riosdor.com.br/hospitais-associados/hospital-provita">- Hospital Provita</option>
                           <option value="http://www.riosdor.com.br/hospitais-associados/hospital-real-cordis">- Hospital Real</option>
                           <option value="http://www.riosdor.com.br/hospitais-associados/hospital-rio-de-janeiro">- Hospital Rio de Janeiro</option>
                           <option value="#">Hospitais em Pernambuco</option>
                           <option value="http://hospitalesperanca.com.br/">- Hospital Esperança</option>
                           <option value="http://www.prontolinda.com.br/">- Hospital Prontolinda</option>
                           <option value="http://www.hospitalsaomarcos.com.br/">- Hospital São Marcos</option>
                       </select>
                   </p>
                   </div>
                   </form>

mas continuo sendo barrado no bloquador de popups.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com window.open não dá pra fazer, mas dá para, ao invés disso, abrir um MODAL...

 

Não é exatamente uma janela a mais do navegador, mas sim uma DIV que você mesmo cria...

 

Estou fazendo uns testes aqui e já posto o resultado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto! Consegui... Veja se é isso que você quer:

 

Crie uma DIV deste jeito:

 

<div id="div" runat="server" style="height:300px;width:300px;visibility:hidden;display:inline;z-index:3200;position:absolute;background-color:White; left:50%;top:50%;"></div>

 

Ela tem o tamanho de 300x300, fundo branco, bem simples, mas com algumas propriedades a mais:

Ela é escondida (visibility:hidden), para o usuário só ve-la quando mudar o DropDown.

Tem o z-index:3200 (ou algum outro valor alto). O maior z-index da página permanece em primeiro plano, seguindo uma hierarquia.

Left:50% e Right:50% para centraliza-la na página (depende da resolução do navegador).

Runat="server", para habilitar a manupulação com o ASP.NET.

 

Com a DIV criada, vamos à tag BODY:

<body id="body" runat="server" style="z-index:-1;">

Do mesmo jeito que a DIV, definimos que o BODY rodará no servidor e que será o elemento que vai aparecer mais ao fundo que todos os outros.

 

Agora, no evento SelectedIndexChanged da DropDown, arregaçar as mangas (lol, nem tanto):

div.Style.Add("visibility", "visible");
       body.Style.Add("filter", "Alpha(Opacity=40);");
       body.Style.Add("-moz-opacity", "0.4");
       body.Style.Add("opacity", "0.4");
       body.Style.Add("background-color", "#999999");

Ou seja, quando o índice da DropDown mudar, a DIV vai mudar de escondida para visível. O BODY ficará com opacidade de 40% e com o fundo acinzentado.

 

Aí você pode colocar o que quiser dentro desta DIV, apenas lembrar de colocar um botão que a feche.

 

:)

 

E se quiser abrir uma outra página que você tenha por meio desse modal, podes criar um iFrame, que tem o mesmo efeito, só que você pode abrir uma página dentro dele :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O modal é uma opção mas o cliente quer igual o site do hospital são luiz, na home do www.saoluiz.com.br no fim da página tem exatamente o que eu preciso fazer. Tem o select ou dropdownlist que lista o sites do grupo e qdo clica abre em outra janela e não barra no bloqueador de popup. é isso que o que tenho que fazer mas até agora não consegui....aguém sabe como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas no site do são Luiz, ele tem um select e dependendo do que você escolher ele redireciona para uma página diferente, mas não abre em pop-up, abre em uma nova aba.

 

 

Passe como um <a ref> normal apenas usando o target=_blank

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas no site do são Luiz, ele tem um select e dependendo do que você escolher ele redireciona para uma página diferente, mas não abre em pop-up, abre em uma nova aba.

 

 

Passe como um <a ref> normal apenas usando o target=_blank

Então é justamente o que não sei como fazer, se eu usar o window.open ele barra no popup, se eu colocar <a href... dentro do option não funciona....

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha.. o windowopen é 1 comportamento a evitar pq aciona a nova janela sem q o usuario tenha essa opção, entende?

o recomendavel é atribuir aos links 1 comportamento tipo "ao clicar"..

bem, d qqer forma

você pode tentar 1 "select" html comum mesmo; ex:

 

<select name="Select1" onchange="FP_jumpMenu(this,'window',false)">
<option value="">Selecione</option>
<option value="http://www.uol.com.br">UOL</option>
<option value="http://www.canaldev.com.br/">CanalDev</option>
<option value="http://forum.imasters.com.br">Forum Imasters</option>
</select>

dentro das tags <body> e </body>

 

só q precisa inserir tb código javascript p/ definir o comportamento "ao selecionar"

(ele já está referenciado lá no trecho "onchange"), ok?

assim dentro das tags <head> e </head>

cole esse código:

 

<script type="text/javascript">
<!--
function FP_jumpMenu(el,frm,sel) {//v1.0
var href=el.options[el.selectedIndex].value; if(sel) el.selectedIndex=0;
if('_new'==frm) open(href); else eval(frm+".location='"+href+"'");
}
// -->
</script>

(pode ser logo abaixo das tags <title> e </title>)

mas isso se os endereços e os nomes não estiverem num banco de dados, ok?

ahe o caminho é diferente..

bom, tenta ahe.. aqui deu certinho..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.