30 messaggi dal 12 aprile 2006
Se ci sono più popup devi aprirle una alla volta?

Per aprirle una alla volta dovresti usare al posto di window.open il metodo window.showModalDialog, che sostanzialmente apre una popup modale (quindi finchè non la chiude l'utente non può tornare sulla pagina sottostante).

Es.:
RegisterClientScriptBlock("nomeCheVuoi", "<script language=Javascript>window.showModalDialog('Annulla.aspx?Matricola=" & Matricola & "&AnnoMiss=" & AnnoMiss & "&Societa=" & Societa & "&NMissione=" & NMissione& "', '', 'elencoImpostazioniDellaFinestra');</script>")


In questa maniera ad ogni popup il codice lato client viene "interrotto" fino alla chiusura della popup. A quel punto potrebbe partire la seconda popup, e così via.

Però il refresh dovrebbe avvenire, se non ho capito male, una volta sola, quindi quando tutte le popup sono state aperte, giusto?
199 messaggi dal 30 aprile 2001
Si deve avvenire una sola volta come faccio ad eseguire il refreh dopo che ho effettuato l'aggiornamento nel DB
199 messaggi dal 30 aprile 2001
Scusa Valerio ma com'e' che eseguundo l'applicazione con il metodo window.showModalDialog cmq non si interrompe le istruzioni successive ma le esegue cmq prima di aprire la poupup ????
30 messaggi dal 12 aprile 2006
L'esecuzione di codice lato server non può bloccarsi su istruzioni che hanno effetto lato client. La window.showModalDialog è una funzione che ha un effetto "immediato" sul client e non sul server.

La tua funzione Annulla dovrà eseguire solo il codice che effettua la stampa su client delle istruzioni javascript che apriranno le/la popup. Poi lato client dovrai preoccuparti di fare in modo che alla chiusura dell'ultima popup parta, se necessario, il refresh della pagina.
199 messaggi dal 30 aprile 2001
Scusa Valerio ma visto che hai le idee chiare non è che puoi dirmi come fare.

Grazie
30 messaggi dal 12 aprile 2006
Provo basandomi sul codice che hai girato te prima, ma non è detto che sia la soluzione corretta o cmq che sia la migliore.

Lato server la tua funzione potrebbe essere questa:
Public Function Annulla() 
  Dim strSelect As String 
  Dim strSQL As String 
  Dim i As Integer = 0
  Dim ContatoreCeck As Integer 
  Dim Verifica As Boolean = False 
  '*** prima erano dichiarate nel ciclo; meglio farlo una volta sola.
  Dim Campo1, Campo2  As String
  Dim Campo3, Campo4 As Integer 
  Dim ceck As String 

  Dim comandoJavaScript as string
  
  CaricaDataGrid2(Datagrid2.CurrentPageIndex, Datagrid2.CurrentPageIndex) 
  Dim dt As DataTable = CType(Session("MyDataSource2"), DataTable) 
  Dim dt2 As DataTable = CType(Session("MyDataSourcebis"), DataTable) 
 
  For Each item As DataRow In dt.Rows 
    Campo1 = item(4) 
    Campo2 = item(5) 
    Campo2 = VerificaSocieta(Campo2) 
    Campo3 = item(7) 
    Campo4 = item(11) 

    ceck = dt2.Rows(i)(0) 
    If ceck = "True" Then
      comandoJavaScript += "window.showModalDialog('Annulla.aspx?Matricola=" & Matricola & "&AnnoMiss=" & AnnoMiss & "&Societa=" & Societa & "&NMissione=" & NMissione & "', null, 'dialogWidth:260px;dialogHeight:250;dialogTop:200px;dialogLeft:200px;resizable:false');" + chr(10) + chr(13)
      ContatoreCeck = ContatoreCeck + 1
    Else 
      Exit Function 
    End If
  
    i = i + 1 
  Next 
  
  if comandoJavaScript <> string.empty then
    '*** aggiunge il codice per ricaricare la pagina con un parametro (REFRESH_GRID per esempio) che indicherà se deve essere rinfrescata la griglia
    comandoJavaScript += "document.forms[0].action+='?REFRESH_GRID=1'; document.forms[0].submit();"
    RegisterClientScriptBlock("nomeCheVuoi", "<script language=Javascript>" + comandoJavaScript + "</script>")
  end if
End Function


A questo punto dovrebbe bastare che sul Page_Load della pagina controllare se Request.QueryString("REFRESH_GRID") è uguale a 1 e, nel caso lo sia, eseguire il refresh della griglia.

Prendila molto alla leggera perchè il codice non l'ho testato e cmq il problema non mi è completamente chiaro; ci sono modi migliori ma un pò più lunghi e complicati da spiegare... :O)

Ciao ciao

P.S.: il codice scritto così dovrebbe eseguire sempre il refresh se viene aperta almeno una popup.
Modificato da valerio.servetto il 19 aprile 2006 15.32 -
199 messaggi dal 30 aprile 2001
Valerio ma una volta effettuato il refresh del DataGrid devo resettare REFRESH_GRID giusto e poi ultimo sforzo è difficile da integrare l'apertura di n poupup dove n è il numero di Missioni che sono state fleggate.


Ciao e grazie sei stato unico
30 messaggi dal 12 aprile 2006
Prego, figurati!

Si REFRESH_GRID dovrebbe essere resettato.

Per quanto riguarda le popup... se non sbaglio ho scitto male il ciclo for nella var. comandoJavaScript dovrebbero già esserci tante popup quante sono le righe con il check = true... Spero di non averlo scritto male nella fretta.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.