Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523

    Inserire checkbox in una tabella e gestirli

    Ciao ragazzi,
    ho un problema di questo tipo:

    Premetto che uso vs.net..
    In una web-form, prelevo alcuni dati da un database e li inserisco in una tabella.
    La tabella viene composta di 3 colonne e un numero non fisso di righe (in base ai record del database..)
    Cliccando su un tasto vorrei che comparisse nella colonna di mezzo (che originariamente era vuota) un checkbox.
    Fin qui tutto ok! Il grosso problema è che dopo la creazione.. come cazz.... riesco a gestirlo, leggere se un checkbox di una delle colonne è chechato????? Sto impazzendo..

    Vi posto il codice del pulsante.

    codice:
    Dim A As Int16 = 0
    For A = 0 To NumDoc - 1
        Dim CheckStampa As New System.Web.UI.WebControls.CheckBox()
        Table1.Rows(A).Cells(1).Controls.Add(CheckStampa)
    Next
    Sono certo che il problema deriva dal fatto che viene dichiarato in il controllo dentro al loop..
    Se fosse vb6 io definirei un array di ChecBox pubblico e il gioco sarebbe semplicissomo!!!
    Non potendo creare array di checkbox, come faccio??

    Lo scopo ultimo sarebbe quello di avere un altro tasto che premendo quello cancella il contenuto della colonna 3 dove il checkbox non è checkato.
    Considerate che il funzionamento del secondo tasto e dei check può tranquillamente rimanere lato client...
    Il problema è che come faccio a nell'evento onclick del secondo pulsante a vedere lo stato dei vari check??

    Grazie mille.
    Ciao
    Gugu
    Ciao
    Andrea

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    Vediamo se ho capito, tu hai una tabella ed in una colanna di questa c'è un checkbox della quale vuoi sapere il valore (true o false)?

    codice:
    Dim MyCheckValue as Boolean
    MyCheckValue = CType(Tabella1.Rows(X).Cells(1).Controls(Y), CheckBox).Value
    'X = numero riga
    'Y = Indice del controllo questo devi cercartelo, oppure utilizza il metodo FindControl

    Hey hey, my my Rock and roll can never die!

  3. #3
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Diciamo che forse ci sono vicino.. grazie al tuo aiuto..
    però ancora non va come deve:

    La mia situazione è questa:
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As Int16 = 0
        For A = 0 To NumDoc - 1
            Table1.Rows(A).Cells(1).Text = ""
            Dim CheckStampa As New System.Web.UI.WebControls.CheckBox()
            CheckStampa.Text = " "
            CheckStampa.ID = "CheckStampa" & A
            Table1.Rows(A).Cells(1).Controls.Add(CheckStampa)
            andrea(A) = Table1.Rows(A).Cells(1).FindControl("CheckStampa" & A)
            'NewsSelez(A) = CType(andrea(A), CheckBox).Checked <-- se abilito questo funziona.. 
        Next
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim a As Int16 = 0
        For a = 0 To NumDoc - 1
            NewsSelez(a) = CType(andrea(a), CheckBox).Checked
        Next a
    End Sub
    Questi sono i miei due tasti.
    Il problema è che se cerco NewsSelez nel tasto1, dove creo anche il controllo CheckBox, funziona.
    Se, come lo voglio io, lo metto nel secondo tasto, non capisco perchè, ma il controllo andrea(index) diventa nothing!!
    ..nonostante sia dichiarato:

    public andrea() as control

    Grazie ancora..
    Ciao
    Andrea

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    Non ho ben capito cosa vuoi fare cmq:

    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As Int16 = 0
        For A = 0 To NumDoc - 1
            Table1.Rows(A).Cells(1).Text = ""
            Dim CheckStampa As New System.Web.UI.WebControls.CheckBox()
            CheckStampa.Text = " "
            CheckStampa.ID = "CheckStampa" & A
            Table1.Rows(A).Cells(1).Controls.Add(CheckStampa)
            andrea(A) = Table1.Rows(A).Cells(1).FindControl("CheckStampa" & A)
        Next
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim a As Int16 = 0
        For a = 0 To NumDoc - 1
            andrea(A) = Table1.Rows(A).Cells(1).FindControl("CheckStampa" & A)
            NewsSelez(a) = CType(andrea(a), CheckBox).Checked
        Next a
    End Sub

    Hey hey, my my Rock and roll can never die!

  5. #5
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Ciao,
    cercherò di spiegarti cose voglio fare.. altrimenti ti riesce difficile aiutarmi.
    considera la mia tabella a 3 colonne e fai conto 15 righe.
    Nella colonna centrale non visualizzo niente.
    Quando premo il primo pulsante, come vedi dal codice creo un checkbox e lo inserisco nella casella della colonna 1, un checkbox ogni riga.
    A questo punto l'utente può selezionare con il check un determinato numero di righe.. fai conto che mette il check della riga 1, 3 e 4.
    Premendo il secondo pulsante, conferma l'operazione e da codice devo capire quali righe ha selezionato con i check e metto il risultato nell'array NewsSelez(x).
    Una volta popolato l'array booleano dei check per me il gioco è fatto.. ci penso poi io a fare il resto!
    Il codice che mi hai corretto non funziona..
    mi da l'errore:
    "Riferimento a un oggetto non impostato su un'istanza di oggetto"
    segnalandomi la riga:
    "NewsSelez(a) = CType(andrea(a), CheckBox).Checked"
    Ho scoperto attraverso il debug che succede q
    Ciao
    Andrea

  6. #6
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    ops.. scusa ho schiacciato invia senza volere..
    dicevo: con il debug ho scoperto che succede questo perchè l'array di controlli che popolo chamato "andrea(x)" si popola correttamente nel primo pulsante, dove creo anche i checkbox, ma diventa "nothing" quando cerco di ripopolarlo nel secondo pulsante!!!
    La cosa è alquanto strana.. eppure è dichiarata public..
    non dovrebbe essere vista da tutti i pulsanti, sub, ecc..??
    Oppure fa così perchè è un array di control??
    dichiarazione di andrea(x):
    Public andrea(50) As Control

    Non sarà perchè creo dentro il pulsante i vari checkbox e quindi al di fuori di tale pulsante non li intercetto più??
    Dai.. non è possibile!!

    Scusami ma con vb.net e asp.net sono alle prime armi..
    in vb6 (col quale mi districo egregiamente..) sarebbe una sciocchezza saltyarci fuori!!!!

    Ti prego di aiutarmi..
    Spero di essere stato chiaro.

    A presto
    Ciao
    Andrea

  7. #7
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Mi aiutate.. oggi è anche il mio comple... sigh...
    Ciao
    Andrea

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    codice:
    For i = 0 to Table1.Rows.Count - 1
      If CType(Table1.Rows(i).Cells(1).Controls(1), CheckBox).Checked Then
          'Il check box è spuntato
          NewSelez(i) = True
       Else
          'Il check box non è spuntato
          NewSelez(i) = False
       End If
    Next i
    Così eviti anche di creare quell'array "Andrea".

    Auguri!

    Hey hey, my my Rock and roll can never die!

  9. #9
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Ciao,
    purtroppo ho ancora brutte notizie..
    Non va!

    Ti riporto il codice dei 2 pulsanti e questa volta ti metto il link al sito provvisorio:
    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim A As Int16 = 0
            For A = 0 To NumDoc - 1
                Table1.Rows(A).Cells(1).Text = ""
                Dim CheckStampa As New System.Web.UI.WebControls.CheckBox()
                CheckStampa.Text = " "
                CheckStampa.ID = "CheckStampa" & A
                'If A = 1 Or A = 2 Or A = 4 Then CheckStampa.Checked = True
                Table1.Rows(A).Cells(1).Controls.Add(CheckStampa)
                andrea(A) = Table1.Rows(A).Cells(1).FindControl("CheckStampa" & A)
                'NewsSelez(A) = CType(andrea(A), CheckBox).Checked
            Next
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim a As Int16 = 0
            For a = 0 To Table1.Rows.Count - 1
                If CType(Table1.Rows(a).Cells(1).Controls(1), CheckBox).Checked Then
                    'Il check box è spuntato
                    NewsSelez(a) = True
                Else
                    'Il check box non è spuntato
                    NewsSelez(a) = False
                End If
            Next a
        End Sub
    Sito di prova:
    andreagugu.www3.dotnetplayground.com

    Nella home pege clicca sul primo link in alto della lista "Novità"
    Cioè su: Prova di visualizzazione testo1

    A questo punto entri nella webform interessata.
    In basso a destra hai i 2 pulsanti del codice sopra.

    L'errore comunque me lo da perchè quando fai Table1.Rows(a).Cells(1).Controls(1), non trova nessun controllo, quindi l'1 genera l'errore.
    Molto probabilmente perchè un controllo creato in un tasto, diventa locale e non lo vedo nell'altro pulsante!

    Sto diventando matto...
    Grazie per gli auguri e la pazienza...

    Ciao
    Ciao
    Andrea

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    Prova ad utilizzare FindControl, o a cambiare l'ID. Cmq questa sera ci lavoro un po' su.

    Hey hey, my my Rock and roll can never die!

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.