[ nebojsa4 @ 14.06.2012. 18:14 ] @
Pozdrav svima.
Muci me pokretanje javascript funkcije klikom na asp:button...

evo ga primer :

test.aspx
Code:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="test.aspx.vb" Inherits="CCWD.test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Testiranje</title>
    <link rel="Stylesheet" href="stilovi.css" media="screen" />
    
    <script language="javascript">
        function OpenNovi() {
            var t = (screen.height / 2) - 240;
            var l = (screen.width / 2) - 300;
            var tw = window.open('novi.aspx', null, 'resizable=no, directories=no, left=0, top=0, status=no, menubar=no, toolbar=no, location=no, scrollbars=yes, titlebar=no, height=480, width=600, top=' + t + ', left=' + l);
        }
    </script>
    
</head>
<body>
    <form id="form1" runat="server">
      <asp:button runat="server" id="btnNovi" Text="Novi" /> 
    </form>
</body>
</html> 


test.aspx.vb
Code:

 Protected Sub btnNovi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNovi.Click
   If Session.Item("moze") = False Then
     'poruka da se ne moze pokrenuti nova stranica - nema ovlascenja, itd itd
     Exit Sub
   End If
   Session.Item("bilosta") = 1
   Session.Item("josnekipodatak") = "Bilo sta sto je potrebno novoj stranici"

   'KAKO odavde sada pokrenuti javascript funkciju OpenNovi

 End Sub


Kao sto je napisano u kodu, kako iz date programske linije (kaka dodele neki podaci session-ima) pokrenuti js funkciju.

Znaci, kada kliknem na button Novi zelim da se u ona dva session-a dodele neki podaci pa tek onda da se pokrene js funkcija tj. da se otvori popup window sa
novom stranicom.

E sada, mozda mnogo trazim ako pitam kako, kada se otvori ta nova stranica u popup win (novi.aspx), bude disable-ovana "glavna" tj. parent (test.aspx) stranica.

Ne zelim da radim sa <a href=.... jer mi je potrebno, kao sto sam gore napisao, da upisem neke podatke u session-e pa tek onda otvaram popup (novi.aspx), koji ce iskorisiti te podatke radi daljeg "rada" stranice.

Unapre hvala na odgovoru/primeru.

Pozdrav svima.
Nebojsa.

P.S. googlovao sam ali se nikako ne snalazim, zato sam ovde i postavio pitanje.
[ S A J A @ 15.06.2012. 07:32 ] @
Pokretanje client funkcije preko serverskog koda nije baš jednostavno. Sa sledećom komandom možemo naložiti brauzeru da pokrene client skript odma posle nego što se završi tekuća komanda (page load, postback...):


Page.ClientScript.RegisterStartupScript(Me.GetType(), "Nešto", "ImeSkripta();", True)

a probaj i

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Nešto", "ImeSkripta();", True)
[ nebojsa4 @ 15.06.2012. 16:50 ] @
Hvala na odgovoru. Pokusacu i to.

Pronasao sam neko resenje :

Code:

 Public Sub OpenNewWindow(ByVal URL As String)
  Dim js As String = "window.open('" + URL + "', null, 'titlebar=no, status=no, ....')"
  Response.Write("<Script type='text/javascript'" & vbCrLf)
  Response.Write(js & vbCrLf)
  Response.Write("</script>" & vbCrLf)
 End Sub


Vase misljenje? Valja li? (otvara novi prozor bez problema)

E sada, pojavio se drugi problem. Kod zatvaranja popup-a, zelim da se u "parent" stranici izvrsi reload... to i uradi dole navedeno ali mi browser postavlja pitanje oko, valjda, refresh-a stranice svaki put, i kada kliknem na Resend, podaci u parent stranici se osveze (konkretno GridView) ali mi se ponovo pojavi popup... ?!

Ovo je kod za zatvaranje popup-a.
Code:

 Public Sub CloseWindow()
            Response.Write("<SCRIPT type='text/javascript'>" & vbCrLf)
            Response.Write("window.close();" & vbCrLf)
            Response.Write("if (window.opener && !window.opener.closed) {window.opener.location.reload();}" & vbCrLf)
            Response.Write("</SCRIPT>" & vbCrLf)
 End Sub


Na koji nacin da se izvrsi osvezavanje "parent" stranice (kada, npr. na popup-u kliknem na button koji sam nazvao "Snimi") bez gore navedenog problema?

Unapred hvala.

Pozz.
[ nebojsa4 @ 15.06.2012. 18:44 ] @
Resenje pronadjeno :

Code:

Public Sub CloseWindowPostback()
        With HttpContext.Current.Response
            .Write("<script type='text/javascript'>" & vbCrLf)
            .Write("<!--" & vbCrLf)
            .Write("window.opener.document.forms[0].submit();" & vbCrLf)
            .Write("self.close();" & vbCrLf)
            .Write("//-->" & vbCrLf)
            .Write("</script>" & vbCrLf)
        End With
    End Sub


Ostalo je jos samo kako disable-ovati parent stranicu (ono, da posivi, da se ne moze kliknuti niti bilo sta raditi na istoj dok se ne zatvori popup).

Pozz.