26 messaggi dal 08 dicembre 2002
Ciao ragazzi,
ho un problema che mi sta un po' assillando..
Purtroppo ho iniziato da poco con asp.net (W VB6!!!!) e ho spesso bisogno di aiuto..
Mi piacerebbe creare in una webform una tabella con 3 colonne, e un numero indefinito di righe.. indefinito perchè dipende del numero di record di un database.
Il mio problema (stupidissimo...) è quello che vorrei creare un pulsante che inserisce un checkbox ogni riga nella seconda colonna.
Dopo che l'utente ha selezionato alcuni checkbox vorrei con un altro tasto far comparire la scritta "Ciao" nella terza colonna delle righe con il checkbox a 1.
Non mi prendete per scemo.. ovviamente cerco di semplificare e ridurre all'osso il problema.
NumDoc è il numero di righe del database.

--------------------------------------------------------------------------------

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).Clear()
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 Table1.Rows.Count - 1
If CType(Table1.Rows(a).Cells(1).FindControl("CheckStampa" & A), CheckBox).Checked Then '"CheckStampa" & a
'Il check box è spuntato
NewsSelez(a) = True
Else
'Il check box non è spuntato
NewsSelez(a) = False
End If
Next a
End Sub
-------------------------------------------------------------

Fatto così funziona fino a quando premo il secondo pulsante..
Il findcontrol non trova un caz.. forse perchè il controllo è dichiarato in modo locale all'interno della routine del primo pulsante?

Aiuto!!!!

Grazie mille raga..
Gugu
Rendilo pubblico a tutta la classe

Ciao
Marco Caruso
26 messaggi dal 08 dicembre 2002
OK.. Ma è proprio questo che non riesco a fare!
Riesci a suggerirmi la modifica al codice?

Ti ringrazio tanto..
Andrea
Metti la dichiarazione in testa al codice fuori dalle sub

Public CheckStampa As New System.Web.UI.WebControls.CheckBox()

cosi se vuoi renderla publica al di fuori della classe

altrimenti private

Ciao

Ciao
Marco Caruso
26 messaggi dal 08 dicembre 2002
E' qui che ti voglio..
se facessi così quando vado a inserire i check nella tabella, me ne inserisce solo uno nell'ultima riga!
Non uno ogni riga come voglio io.
In effetti se lo dichiaro fuori dalla routine come public, mi crea di fatto un solo oggetto checkbox.
Se faccio il loop di tutte le righe che ho (vedi codice nel primo post: button1) inseriendo con addcontrol il checkbox, non fa altro che spostarmelo da riga a riga.. dato che ne ho creato uno solo!
Se lo metto locale come in origine crea un checkbox ogni passaggio del loop e questo mi consente di ottenere un check ogni riga..
Come si può fare per avere capra e cavoli??
Avere un check per ogni riga ma che posso vedere al di fuori della routine?
Puoi fare così:

Public CheckStampa As System.Web.UI.WebControls.CheckBox

e nella sub


CheckStampa = new System.Web.UI.WebControls.CheckBox()

dovrebbe funzionare

Ciao
Marco Caruso
26 messaggi dal 08 dicembre 2002
Ancora niente..
Mi restituisce l'errore:
"Riferimento a un oggetto non impostato su un'istanza di oggetto."
Quando prova a fare il findcontrol.
Ovviamente perchè non trova niente..
MA PERCHE' VB.NET NON GESTISCE ARRAY DI OGGETTI!!!!!!!!!!!!!!!!!!!!!!!!!
Era così semplice con vb6.. usavi un checkbox(index) dichiarato publico.. e via!!
Veramente allucinante..

E' una stupidata ma mi blocca il lavoro..
Grazie per l'aiuto.. se hai tempo e soprattutto voglia, ci dai un'occhiata ancora?

Te ne sono grato..
Ciao
Andrea
I controlli vanno ricreati ad ogni postback (perché non siamo in una app win , quindi o la procedura di creazione la richiami nel page_load quando opportuno o, inserisci da subito nel codice aspx il checkbox così lo ricrea ad ogni postback ma assegnali la proprietà visible a false così non te lo fa vedere. Sulla action del tuo pulsante non fai altro che far passare tutte le righe e cambiare la proprietà visible e poi per i futuri postback grazie al viewstate verrà mantenuta la visibilità o meno.

Ciao

Il mio blog
Homepage

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.