Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 49
  1. #1
    Syd Barrett
    Guest

    Problema di logica (vi prego vi prego datemi una mano)

    Allora:
    ho un datareader che prende * da una tabella.
    Mi scrive ogni risultato in una lista L.
    Ho un array (che contiene il risultato di un'altra query della tabella incrociata ad un'altra, che tira fuori gli elementi relativi all'utente corrente), e in base a questo, metto o non metto un check nei checkbox della lista L.
    ora....
    ho un pulsante salva.
    come faccio ad aggiornare la situazione?
    non so più dove sbattere il cranio.



    questo è il codice

    codice:
    Public Class Cert
        Inherits System.Web.UI.Page
        Protected WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
        Protected WithEvents SqlCommand1 As System.Data.SqlClient.SqlCommand
        Protected WithEvents tblLista As System.Web.UI.WebControls.Table
        Protected SqlDataReader1 As System.Data.SqlClient.SqlDataReader
        Protected WithEvents lnkChiudi As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lnkSalvaChiudi As System.Web.UI.WebControls.LinkButton
        Protected WithEvents lnkRegistra As System.Web.UI.WebControls.LinkButton
        Dim arrLista As New ArrayList()
        Dim i, h
        Protected WithEvents CSSStilePagina As System.Web.UI.WebControls.Literal
        Protected WithEvents SqlConnection2 As System.Data.SqlClient.SqlConnection
        Protected WithEvents LblEnte As System.Web.UI.WebControls.Label
        Shared IDEnte
    
    #Region " Codice generato da Progettazione Web Form "
    
        'Chiamata richiesta da Progettazione Web Form.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection()
            Me.SqlCommand1 = New System.Data.SqlClient.SqlCommand()
            Me.SqlConnection2 = New System.Data.SqlClient.SqlConnection()
            '
            'SqlConnection1
            '
            Me.SqlConnection1.ConnectionString = "data source=sviluppo;initial catalog=SinfodDirettive;integrated security=SSPI;per" & _
            "sist security info=False;workstation id=CORINNA;packet size=4096"
            '
            'SqlCommand1
            '
            Me.SqlCommand1.Connection = Me.SqlConnection1
            '
            'SqlConnection2
            '
            Me.SqlConnection2.ConnectionString = "data source=sviluppo;initial catalog=SinfodDirettive;integrated security=SSPI;per" & _
            "sist security info=False;workstation id=CORINNA;packet size=4096"
    
        End Sub
    
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
            'Non modificarla nell'editor del codice.
            InitializeComponent()
        End Sub
    
    #End Region
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            cssStilePagina.Text = "<link type=""text/css"" rel=""stylesheet"" href=""" & LeggiStilePagina(Request.Cookies("IDDettaglioUtentiDSA").Value, Modulo.TipoPagina.Contesto) & """>"
            Call VerificaEnte()
            Dim Count = 0
    
            SqlCommand1.CommandText = "SELECT * FROM DettaglioStruttureCertificazioni WHERE IDStruttura=" & IDEnte & "ORDER BY IDCertificazione"
            SqlConnection1.Open()
            SqlDataReader1 = SqlCommand1.ExecuteReader()
            While SqlDataReader1.Read
                arrLista.Add(SqlDataReader1.Item("IDCertificazione"))
                Count = Count + 1
            End While
            SqlDataReader1.Close()
            SqlConnection1.Close()
            SqlCommand1.CommandText = "SELECT * FROM Certificazioni ORDER BY IDCertificazione"
            SqlConnection1.Open()
            SqlDataReader1 = SqlCommand1.ExecuteReader()
            While SqlDataReader1.Read
    
                Dim tblListaRow As New TableRow()
                Dim tblListaCell1 As New TableCell()
                Dim tblListaCell2 As New TableCell()
    
    
                Dim chkCertificazione As New CheckBox()
                chkCertificazione.ID = SqlDataReader1.Item("IDCertificazione")
                chkCertificazione.Attributes.Add("OnClick", "document.Form1.FormChanged.value='1'")
                chkCertificazione.Checked = False
                For Each h In arrLista
                    If SqlDataReader1.Item("IDCertificazione") = h Then
                        chkCertificazione.Checked = True
                    End If
                Next
                tblListaCell1.Controls.Add(chkCertificazione)
                tblListaCell2.Controls.Add(New LiteralControl(SqlDataReader1.Item("Denominazione")))
                tblListaRow.Cells.Add(tblListaCell1)
                tblListaRow.Cells.Add(tblListaCell2)
                tblLista.Rows.Add(tblListaRow)
            End While
            SqlConnection1.Close()
            If Not Page.IsPostBack Then
            End If
            Call DetectFormChanged(Page, "lnkRegistra")
        End Sub
    
        Sub VerificaEnte()
            Dim SQL As String
            SQL = "SELECT DISTINCT dbo.DettaglioStruttureApplicazioni.IDStruttura, dbo.Strutture.Nome, dbo.TipoStruttura.Nome AS Tipo" & _
            " FROM dbo.DettaglioUtentiDSA INNER JOIN dbo.DettaglioStruttureApplicazioni ON dbo.DettaglioUtentiDSA.IDDettaglioStrutturaApplicazione = dbo.DettaglioStruttureApplicazioni.IDDettaglioStrutturaApplicazione INNER JOIN" & _
            " dbo.Strutture ON dbo.DettaglioStruttureApplicazioni.IDStruttura = dbo.Strutture.IDStruttura INNER JOIN dbo.TipoStruttura ON dbo.Strutture.IDTipoStruttura = dbo.TipoStruttura.IDTipoStruttura" & _
            " WHERE dbo.DettaglioUtentiDSA.IDDettaglioUtentiDSA = " & Request.Cookies("IDDettaglioUtentiDSA").Value
    
            SqlConnection1.Open()
            Dim command As New SqlClient.SqlCommand()
            Dim DRCertificazioni As SqlClient.SqlDataReader
            command.Connection = SqlConnection1
            command.CommandText = SQL
            DRCertificazioni = command.ExecuteReader()
            If DRCertificazioni.Read Then
                IDEnte = DRCertificazioni.Item("IDStruttura") ' riempio la variabile shared con l'id dell'ente di cui fa parte il responsabile
                LblEnte.Text = DRCertificazioni.Item("Tipo") & " " & DRCertificazioni.Item("Nome")
            End If
            DRCertificazioni.Close()
            DRCertificazioni = Nothing
            SqlConnection1.Close()
        End Sub
    e poi

    codice:
        Private Sub lnkRegistra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkRegistra.Click
       
    e qui?? :( 
          
        End Sub
    
        Private Sub lnkSalvaChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkSalvaChiudi.Click
            lnkRegistra_Click(sender, e)
            lnkChiudi_Click(sender, e)
        End Sub
    
        Private Sub lnkChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkChiudi.Click
            Response.Redirect("Mdl2002.htm")
        End Sub
    vi prego.... aiutatemi....

  2. #2

    Re: Problema di logica (vi prego vi prego datemi una mano)

    [supersaibal]Originariamente inviato da Syd Barrett
    codice:
        Private Sub lnkRegistra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkRegistra.Click
       
    e qui?? :( 
          
        End Sub
    
        Private Sub lnkSalvaChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkSalvaChiudi.Click
            lnkRegistra_Click(sender, e)
            lnkChiudi_Click(sender, e)
        End Sub
    
        Private Sub lnkChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkChiudi.Click
            Response.Redirect("Mdl2002.htm")
        End Sub
    [/supersaibal]
    Dentro lnkRegistra_Click dovresti mettere una cosa simile (te le posto in c# perché io non ne faccio uso di WB.NET :tongue:
    codice:
    foreach(DataGridItem dgi in MyDataGrid.Items)
    {
     // x corrisponde alla colonna dove risiede la checkbox da controllare
     // la numerazione parte da 0
     CheckBox c= (CheckBox)dgi.Cells[x].Controls[1];
     if(c.Checked==true) 
      {
       // dove risiede l'identificativo a te necessario
       string id = ((CheckBox)dgi.Cells[y].Controls[1]).ID;
       arrIDTrue.Add(id);
      }
    }
    Posso aver errato qualche riferimento perché non mi sono messo a vedere i vari livelli di nidificazione tra i controlli da te creati.

    Cmq oltre a questo volevo dirti di disiabiturati ad eseguire chiamate da codice direttamente agli eventi di altri bottoni perché non è molto carino e poco funzionale visto che oltre tutto quelle funzioni si vedono arrivare chiamate da un oggetto sender differente da quello collegato nel delegate. A funzionare funzione. Ma non è molto bello e comprensibile di primo impatto.
    Solitamente si fanno funzioni private void "chiudi" e "salva" e poi le si richiama dagli eventi che ne richiedono il bisogno.


  3. #3
    Syd Barrett
    Guest
    Ma il problema è che io non so quante saranno le checkbox nè tantomeno che id avranno... non sono fisse

  4. #4
    Scusa ma non hai solamente due o tre colonne con i check box.

    La variabile sul tuo datagrid sono i record e non le colonne o sbaglio?

  5. #5
    Syd Barrett
    Guest
    sì esatto, ma contnuo a non capire
    scusa ma sono un po gnucca ;(

  6. #6
    codice:
    foreach(DataGridItem dgi in MyDataGrid.Items)
    {
     // x corrisponde alla colonna dove risiede la checkbox da controllare
     // la numerazione parte da 0
     CheckBox c= (CheckBox)dgi.Cells[x].Controls[1];
     if(c.Checked==true) 
      {
       // dove risiede l'identificativo a te necessario
       string id = ((CheckBox)dgi.Cells[y].Controls[1]).ID;
       arrIDTrue.Add(id);
      }
    }
    Al posto della x dovrai mettere il numero corrispondente alla "Colonna" dove risiede la checkBox che vuoi controllare.
    Esempio:
    ID | Nome | Cognome | NewsLetter
    -----------------------------
    0 | Simone | Severa | true
    1 | Pippo | Pluto | false

    NewsLetter sarà la colonna con la nostra checkbox.
    A questo punto, il nostro codice riadattato sarà il serguente:

    codice:
    foreach(DataGridItem dgi in MyDataGrid.Items)
    {
     CheckBox c = (CheckBox)dgi.Cells[2].Controls[1];
     if(c.Checked==true) 
      {
       string id = dgi.Cells[0].Text;
       arrIDTrue.Add(id);
      }
    }

  7. #7
    Syd Barrett
    Guest
    ma se io non potessi usare un datagrid ma soltanto una table?

  8. #8
    codice:
    foreach(TableRow tr in MyTable.Rows)
    {
     CheckBox c = (CheckBox)tr.Cells[2].Controls[1];
     if(c.Checked==true) 
      {
       string id = tr.Cells[0].Text;
       arrIDTrue.Add(id);
      }
    }
    Dovrebbe andare così nel caso in cui usi una tabella.
    Se ti stai domandando il perché di così poche variazioni di codice, la risposta è:
    Il DataGridItem eredità molte sue caratteristiche dal TableRow dell'oggetto Table, quindi la sua struttura è molto simile

    P.S.
    Il codice si riferisce all'esempio che ho fatto io precedentemente!

  9. #9
    Syd Barrett
    Guest
    sei gentilissimo....
    sono io che ho sbagliato lavoro
    adesso ci provo, a metterlo in VB....
    Grazie

  10. #10
    Syd Barrett
    Guest
    sei gentilissimo....
    sono io che ho sbagliato lavoro
    adesso ci provo, a metterlo in VB....
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.