Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Asp.net domanda banale lato server

    Ciao a tutti, ho un dubbio amletico ma banale.
    Ho creato una pagina in ascx , dove fa le seguenti operazioni:

    1)Prende i dati dal form.
    2)Verifica i dati
    3)salva i dati nel DB
    4)Scrive i dati in un file
    5)manda una mail
    6)reindirizza in un'altra pagina

    Ora il mio dubbio è questo se nel punto 1 l'utente all'utente dopo aver premuto il tasto "INVIA" gli si chiude la pagina internet, il programma dovrebbe andare avanti da solo giusto?
    Quando vado ad inserire i dati nel db li inserisco in una tabella USERNAME con la sessione delll'utente, ma se l'utente non c'è più rimane cmq in memoria il suo username?
    Grazie

  2. #2
    bhè se segui la procedura da te descritta direi proprio che va bene, ma il tuo dubbio si crea per il fatto che tu reindirizzi il tutto ad un'altra pagina?
    se è così non c'è problema va tutto benissimo.

  3. #3

    ok

    Il mio dubbio è se l'utente una volta chiusa la sessione prima che i dati siano memorizzati sul db , questa procedura non avvenga in quanto utilizzo la session per ricavare il nome dell'utente che sta navigando

  4. #4
    sarebbe da vedere il codice, ma se ho ben capito quello che intendi fare secondo me non hai problemi con la sessione.

  5. #5
    Questo è il codice, praticamente è l'acquisto di un giocatore per un sito del fantacalcio.

    ammettiamo che l'utente si slogga chiudendo la pagina mentre acquista un giocatore
    in teoria non dovrebbe rimanere nessun dato a "metà"
    Se poi si riesce a sistemare un po' il codice sarebbe il max anche perchè per questo progetto avrei bisogno di una mano per il codice
    Dim objUser As UserInfo = UserController.GetCurrentUserInfo

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Try

    If IsPostBack = True Then
    PrerenderGv1 = True
    PrendiCredito()
    ' Qui Abilito o Cecco le celle già presenti nella squadra
    ' AbilitaDisabilitaCelle()
    Else
    PrerenderGv1 = True
    ' SE LA SQUADRA ="" TORNARE ALLA PAGINA LOGIN
    If Session("Nsq") = "" Then Response.Redirect("~/default.aspx")
    'Leggo se ha più squadre se non vi sono già presenti
    SqlMia = "SELECT * FROM _ASSOCIAZIONEAS WHERE allenatore = '" & objUser.Username & "'"
    CxDb.ApriDb("Generale", SqlMia)
    Lettore = CxDb.CmdDbGenerale.ExecuteReader
    While Lettore.Read()
    LProprieSq.Items.Add(UCase(Lettore("nomesquadra")) )
    End While
    LProprieSq.SelectedValue = Session("Nsq")
    Lettore.Close()
    CxDb.ChiudiDb("Generale")
    PrendiSquadra()

    End If

    Catch ex As Exception
    MsgBox(ex.ToString & " 1")
    End Try

    End Sub

    Private Sub PrendiSquadra()

    Try
    'STEP 1
    ErrNum = "AcPo-PrSq01"
    Dim SqlRosa As New StringBuilder
    'SqlRosa.Append("SELECT COUNT(ruolo) AS Quanti,costoA,nome,Squadra,Idgiocatore,DataA FROM [")
    SqlRosa.Append("SELECT * FROM [")
    SqlRosa.Append(LProprieSq.SelectedValue & "]")
    SqlRosa.Append(" Order by Ruolo DESC, nome ASC , Squadra ASC ,CostoA DESC")
    ADSSquadra.SelectCommand = SqlRosa.ToString

    PrendiCredito()
    Catch ex As Exception
    MsgBox(ex.ToString & " 2")
    End Try

    End Sub
    Private Sub PrendiCredito()

    SqlMia = "SELECT credito FROM _ASSOCIAZIONEAS WHERE NomeSquadra='" & LProprieSq.SelectedValue & "' "
    If CxDb.ApriDb("GENERALE", SqlMia.ToString) = False Then
    MsgBox(ErrNum)
    End If

    Dim Lettore As OleDbDataReader
    Lettore = CxDb.CmdDbGenerale.ExecuteReader
    While Lettore.Read()
    LCR.Text = Lettore("credito")
    End While

    Lettore.Close()
    CxDb.ChiudiDb("Generale")

    ' Basta che ciclo il datagrid per sapere i giocatori che possiede
    Lnp.Text = 0 : Lnd.Text = 0 : Lnc.Text = 0 : Lna.Text = 0
    Try
    If Giocatori.Rows.Count = 0 Then Exit Sub


    Dim GR As GridViewRow
    For Each GR In GridSq.Rows
    GridSq.SelectedIndex = GR.RowIndex
    Select Case GridSq.SelectedRow.Cells(5).Text
    Case Is = "P"
    Lnp.Text += 1
    Case Is = "D"
    Lnd.Text += 1
    Case Is = "C"
    Lnc.Text += 1
    Case Is = "A"
    Lna.Text += 1
    End Select
    Next

    ' Qui recupero i crediti dal DB GENERALE
    Catch ex As Exception
    MsgBox(ErrNum)
    End Try
    End Sub

    Private Sub AbilitaDisabilitaCelle()

    End Sub
    Protected Sub BCEdi_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Try
    If GridSq.Rows.Count = 0 Then Exit Sub

    Dim GR As GridViewRow
    Dim ArrSel As New ArrayList
    For Each GR In GridSq.Rows
    If DirectCast(GR.FindControl("ChkSq"), CheckBox).Checked Then
    GridSq.SelectedIndex = GR.RowIndex
    ArrSel.Add(GridSq.SelectedDataKey.Value.ToString)
    ' QUi aggiorno il calciomercato1g probabilmente non c'è più bisogno di tale file
    'CxDb.Aggiorna1g(LProprieSq.SelectedItem.ToString, GridSq.SelectedDataKey.Value.ToString, GridSq.SelectedRow.Cells(2).Text, GridSq.SelectedRow.Cells(3).Text, GridSq.SelectedRow.Cells(4).Text, GridSq.SelectedRow.Cells(5).Text)
    LCR.Text += CInt(GridSq.SelectedRow.Cells(3).Text)
    ' Qui inserisco nel calciomercato
    CxDb.VendiGiocatori(LProprieSq.SelectedItem.ToStri ng, GridSq.SelectedDataKey.Value.ToString, GridSq.SelectedRow.Cells(2).Text, GridSq.SelectedRow.Cells(3).Text, GridSq.SelectedRow.Cells(4).Text, GridSq.SelectedRow.Cells(5).Text)

    CxDb.AggiornaCrediti(LProprieSq.SelectedValue, CInt(LCR.Text))
    End If
    Next
    If ArrSel.Count = 0 Then Exit Sub

    Dim selezione As String = ""
    Dim i As Int16

    For i = 0 To ArrSel.Count - 1

    If ArrSel(i).ToString = "" Then Exit For
    selezione &= ArrSel.Item(i).ToString
    If ArrSel.Count - 1 <> i Then selezione &= ","

    Next
    ADSSquadra.DeleteCommand = "DELETE FROM [" & LProprieSq.SelectedValue & "] WHERE [IDGiocatore] IN (" & selezione & ")"
    ADSSquadra.DeleteParameters.Add("Idgiocatore", GridSq.SelectedValue)
    ADSSquadra.Delete()
    GridSq.DataBind()
    Catch ex As Exception
    MsgBox(ex.ToString & " 3")
    End Try
    PrendiSquadra()
    End Sub

    Protected Sub BCompra_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Try

    Dim VettorePortieri As New ArrayList
    Dim I, CreditiUsati As Int16
    Dim GR As GridViewRow
    For Each GR In Giocatori.Rows
    ' se è enable = false vuol dire che è già stato comprato
    Giocatori.SelectedIndex = GR.RowIndex
    If DirectCast(GR.FindControl("Chkport"), CheckBox).Checked = True And Giocatori.SelectedRow.Enabled = True Then
    VettorePortieri.Add(Giocatori.SelectedIndex.ToStri ng)
    CreditiUsati += CInt(Giocatori.SelectedRow.Cells(3).Text)
    I += 1

    End If
    Next
    If I = 0 Then Exit Sub
    If CInt(LCR.Text) < CreditiUsati Then
    MsgBox("Non puoi acquistare questo giocatore xchè hai superi i 250 crediti!", MsgBoxStyle.OkOnly, "ACQUISTO NEGATO")
    Exit Sub
    End If

    Select Case Giocatori.SelectedRow.Cells(5).Text
    Case "P"
    If (I + CInt(Lnp.Text)) > 3 Then
    MsgBox("Stai cercando di comprare più PORTIERI di quelli consentiti")
    Exit Sub
    End If
    Case "D"
    If (I + CInt(Lnd.Text)) > 8 Then
    MsgBox("Stai cercando di comprare più DIFENSORI di quelli consentiti")
    Exit Sub
    End If
    Case "C"
    If (I + CInt(Lnc.Text)) > 8 Then
    MsgBox("Stai cercando di comprare più CENTROCAMPISTI di quelli consentiti")
    Exit Sub
    End If
    Case "A"
    If (I + CInt(Lna.Text)) > 6 Then
    MsgBox("Stai cercando di comprare più ATTACCANTI di quelli consentiti")
    Exit Sub
    End If

    End Select

    ' QUI AGGIORNI I CREDITI
    LCR.Text -= CreditiUsati

    CxDb.AggiornaCrediti(LProprieSq.SelectedValue, CInt(LCR.Text))

    ' Compra tramite vettore con le datakey
    Dim I2 As Int16
    For I2 = 0 To I - 1
    Compra(VettorePortieri(I2).ToString)
    Next
    Catch ex As Exception
    MsgBox(ex.ToString & " 5")
    End Try
    PrendiSquadra()
    Seleziona()
    End Sub


    Private Sub Compra(ByVal IdComprare As Int16)
    Try
    'STEP 1
    ErrNum = "AcPo-Comp01"
    Dim nomegiocatore, ruolo, squadra As String
    Dim Idgiocatore, costo As Integer
    Giocatori.SelectedIndex = IdComprare
    Idgiocatore = Giocatori.SelectedDataKey.Value
    nomegiocatore = Giocatori.SelectedRow.Cells(2).Text
    squadra = Giocatori.SelectedRow.Cells(4).Text
    costo = Giocatori.SelectedRow.Cells(3).Text
    ruolo = Giocatori.SelectedRow.Cells(5).Text

    If CxDb.AcqGiocatore(LProprieSq.SelectedValue, Idgiocatore, nomegiocatore, costo, squadra, ruolo) = False Then
    MsgBox("X")
    End If
    'Giocatori.SelectedRow.Enabled = False
    Catch ex As Exception
    MsgBox(ex.ToString)
    End Try


    End Sub
    Private Sub Seleziona()
    XXXXXXX
    End Sub



    Protected Sub GridSq_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
    Exit Sub
    If e.Row.RowType = DataControlRowType.DataRow Then
    Select Case e.Row.Cells(5).Text
    Case Is = "P"
    e.Row.BackColor = Drawing.Color.Green
    Case Is = "D"
    e.Row.BackColor = Drawing.Color.Gray
    Case Is = "C"
    e.Row.BackColor = Drawing.Color.Gold
    Case Is = "A"
    e.Row.BackColor = Drawing.Color.GhostWhite

    End Select

    End If
    End Sub



    Protected Sub Giocatori_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)

    If PrerenderGv1 = False Then
    PrerenderGv1 = True
    Exit Sub
    End If

    Dim ContaGv1, Contasq, Fine As Int16

    For ContaGv1 = 0 To Giocatori.Rows.Count - 1
    Giocatori.Rows(ContaGv1).Enabled = True
    Dim chk As CheckBox = Giocatori.Rows(ContaGv1).Cells(1).FindControl("ChK port")
    chk.Checked = False
    For Contasq = 0 To GridSq.Rows.Count - 1

    If Giocatori.Rows(ContaGv1).Cells(0).Text = GridSq.Rows(Contasq).Cells(0).Text And Fine <> GridSq.Rows.Count Then
    Giocatori.Rows(ContaGv1).Enabled = False
    chk.Checked = True
    Fine += 1
    Exit For
    End If
    Next
    Next

    ' qui mi tocca fare un controllo per vedere se abilitare o no le celle
    Select Case ListAcquisti.SelectedValue
    Case "P"
    If Lnp.Text = 3 Then
    For ContaGv1 = 0 To Giocatori.Rows.Count - 1
    Giocatori.Rows(ContaGv1).Enabled = False
    Next
    End If

    Case "D"
    If Lnd.Text = 8 Then
    For ContaGv1 = 0 To Giocatori.Rows.Count - 1
    Giocatori.Rows(ContaGv1).Enabled = False
    Next
    End If
    Case "C"
    If Lnc.Text = 8 Then
    For ContaGv1 = 0 To Giocatori.Rows.Count - 1
    Giocatori.Rows(ContaGv1).Enabled = False
    Next
    End If

    Case "A"
    If Lna.Text = 6 Then
    For ContaGv1 = 0 To Giocatori.Rows.Count - 1
    Giocatori.Rows(ContaGv1).Enabled = False
    Next
    End If

    End Select
    End Sub

  6. #6

    OK risolto

    Potevo in effetti fare prima questa prova :

    Try
    Dim a As Int16
    Dim sql As String
    For a = 0 To 15995
    sql = "Update TEST SET Intero =" & a & " WHERE allenatore='" & objUser.Username & "'"
    cxdb.EseguiDb("Generale", sql, False)
    Next
    cxdb.ChiudiDb("generale")
    'INVIO MAIL
    DotNetNuke.Services.Mail.Mail.SendMail("AcquistoSq uadra@fantabar.com", objUser.Email, "", "RA", "CIAO", "", "HTML", "", "", "", "")
    Catch ex As Exception
    Exit Sub
    End Try

    Ho cambiato pagina, chiuso il browser e giustamente come dicevi giustamente anche te, ha fatto tutto fino alla fine. Però volevo essere sicuro e chiederlo anche a voi
    Per il codice nel post precedente, qualche suggerimento per migliorarlo?

  7. #7
    Guarda, migliorarlo! è una parola difficile. Secondo me sei un po legato agli oggetti. Io programmo molto diversamente da te, poi sinceramente mettere le mani in tutto quel listato non è cosa da poco.

    Diciamo che l'ultimo codice postato mi piace molto e si avvicina al mio modo di programmare. Continua così.

  8. #8

    Ok

    Giusto, infatti nel nuovo progetto programmo spesso senza oggetti...tranne in quelche caso
    Solo un'ultima domanda. Ho due tabelle come nel codice sopra, come posso dirgli in maniera semplice(prima facevo un ciclo delle celle della prima e della seconda) di checchare e disabilitare(anche solo disabilitare) le celle che sono presenti nella grid A nella grid B?
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.