199 messaggi dal 30 aprile 2001
Salve ragazzi ho il seguente problema ho una griglia con un campo ceckbox alla selezione di questo ceckbox si deve aprire una finestra di poup-poup logicamente bloccando il codice successivo all'apertura della poup-poup una volta terminata l'operazione presente nella poup-pou il controllo passa al form chiamante che deve continuare nella sua esecuzione.

Spero di essermi spiegato e vi ringrazio tutti
30 messaggi dal 12 aprile 2006
Ciao!
Dovresti scrivere nell'evento ItemDataBound della griglia quelcosa tipo

Dim oChk As CheckBox
Try
  Select Case e.Item.ItemType
    Case ListItemType.AlternatingItem, ListItemType.Item, ListItemType.SelectedItem
      oChk = CType(e.Item.Cells(iniceDellaColonnaCheContieneIlCheckBox).FindControl("idDelCheckBox"), CheckBox)
      oChk.Attributes("onclick") = "return apriPopUp();"
   End Select
Catch ex As Exception
  Throw ex
End Try

A questo punto definisci la funzione la client che apre la popuUp.
<script language="javascript">
  function apriPopUp(){
    window.showModalDialog('www.voglioAndareInFerie.com', null, 'elencoDelleFeatures');
  }
</script>


Usando il metodo showModalDialog al posto del classico open ti permette di bloccare l'esecuzione del codice lato client fino a che la finestra non viene chiusa.

L'elenco delle feature del metodo showModalDialog lo puoi trovare su http://msdn.microsoft.com; sono cmq simili a quelle del metodo open.

Spero di aver capito quel che ti serve fare.

Ciao
Valerio
Ciao,

potresti fare cosi:
nel DataGridItemDataBound intercetti il checkbox e.Item.FindControl(string)
myCheckBox.Attibutes.Add("onclick","window.open(bla,bla);return (false);");

Al popup passi il parametri che ti servono via querystring.

that'all.

Fabrizio Canevali
199 messaggi dal 30 aprile 2001
Allora io nel click del bottone
chimo una funzioe che si chiama Annulla
All'interno di essa mi leggo i campi del DataGrid controllando se il ceckboc è stato fleggato e faccio
Response.Write("<script language=Javascript>window.open('Annulla.aspx?xx& "','','width=260,height=250,top=200,left=200,resizable=false')</sc" + "ript>")
A questo punto dopo questa chiamata c'è altro codice che serve a refreshare la griglia perche nella poup-poup il mio utente puo' fare update in una tabella.
Qundi vorrei che una volta eseguito o non eseguito l'operazione che è presente nella poup-poup sia possibile esguire il blocco di codice successivo alla chiamata window.open
Spero di essermi spiegato.

Grazie
30 messaggi dal 12 aprile 2006
Il codice che esegue il refresh della griglia è codice lato server che appartiene sempre alla funzione Annulla e che viene eseguito subito dopo la Reponse.Write che hai riportato nel post di prima?

Se è così temo ci sia un problema di fondo nella struttura della pagina.
Fammi sapere

Ciao
Vale
199 messaggi dal 30 aprile 2001
Si proprio cosi' adesso ti scrivo.
Ti invio il codice cosi' è piu' semplice.
Il codice all'interno del bottone
Chiama la funzione
Annulla() e questa dopo aver letto i dati dalla griglia apre la poup-poup e non capisco perchè il codice successivo all'open viene eseguito.
Quello che dovrei fare in modo che il codice successivo vengo eseguito dopo la chiusura della poup-poup

Grazie a tutti.

La Funzione Annulla è cosi composta

Public Function Annulla()
Dim strConnect As String
Dim strSelect As String
Dim strSQL As String
Dim i As Integer
Dim ContatoreCeck As Integer
Dim Verifica As Boolean
Verifica = False


strConnect = ConfigurationSettings.AppSettings("TEST")

CaricaDataGrid2(Datagrid2.CurrentPageIndex, Datagrid2.CurrentPageIndex)
Dim dt As DataTable = CType(Session("MyDataSource2"), DataTable)
Dim dt2 As DataTable = CType(Session("MyDataSourcebis"), DataTable)


i = 0
For Each item As DataRow In dt.Rows
Dim Campo1 As String
Campo1 = item(4)
Dim Campo2 As String
Campo2 = item(5)
Campo2 = VerificaSocieta(Campo2)

Dim Campo3 As Integer
Campo3 = item(7)
Dim Campo4 As Integer
Campo4 = item(11)
Dim ceck As String
ceck = dt2.Rows(i)(0)
If ceck = "True" Then
Response.Write("<script language=Javascript>window.open('Annulla.aspx?Matricola=" & Matricola & "&AnnoMiss=" & AnnoMiss & "&Societa=" & Societa & "&NMissione=" & NMissione & "','','width=260,height=250,top=200,left=200,resizable=false')</sc" + "ript>")
ContatoreCeck = ContatoreCeck + 1
Else
Exit Function
End If
End If
i = i + 1
Next

If Verifica = True Then
Datagrid2.DataSource = CreaDataGrid2()
If Datagrid2.Items.Count = ContatoreCeck Then
Try
Datagrid2.CurrentPageIndex = Datagrid2.CurrentPageIndex - 1
Datagrid2.DataBind()
Catch ex As Exception
Datagrid2.CurrentPageIndex = 0
Datagrid2.DataBind()
End Try
Else
Datagrid2.DataBind()
End If
Else
End If
End Function
30 messaggi dal 12 aprile 2006
Il problema di fondo è che la popup viene aperta lato client, quindi solamente quando tutto il codice lato server viene eseguito. La Response.Write non interrompe l'esecuzione del codice lato server ma "prepara" un pezzo di codice che verrà scritto ed eseguito solamente quando la pagina sarà restituita al client.

Dovresti spezzare il codice della tua funzione in modo che la funzione Annulla scriva, per esempio, solo la parte di codice fino al Response.Write.

Una volta terminato il codice lato server, la pagina aprirà la popup. A questo punto bisognerà fare in modo di far ricaricare la pagine per fare il refresh della griglia.

Ah! Per questo caso ti consiglio di usare il metodo
RegisterClientScriptBlock("nomeCheVuoi", "<script language=Javascript>window.open('Annulla.aspx?Matricola=" & Matricola & "&AnnoMiss=" & AnnoMiss & "&Societa=" & Societa & "&NMissione=" & NMissione& "', '', 'width=260,height=250,top=200,left=200,resizable=false')</script>")


Un'ultima cosa... le popup potrebbero essere più d'una? dal codice mi sembra di aver capito che potrebbero essere tante quante le righe del dt. E' abbastanza importante perchè in questo caso anche il codice lato client potrebbe cambiare parecchio.

Ciao
Vale
199 messaggi dal 30 aprile 2001
Si Valerio le popup potrebbero essere piu' di una questo è un altro problema.

Come devo risolverlo dammi una mano per favore non riesco a risolvere questo problema.

Grazie

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.