Questionario on-line in asp.net

domenica 09 marzo 2008 - 19.06

86Marco Profilo | Expert

Salve.
Devo creare in asp.net un questionario di 30 domande con due risposte possibili ciascuna (Vero o falso).
Lo faccio tranquillamente cpn visual web developer associando ad ogni domanda due option button. Per ogni domanda pongo una label (non visibile in esecuizione)che mi riporta "corretto" se il valore della risposta è corretto altrimenti "errato".
Tramite una procedura ora, devo riuscire a sapere quante risposte sono state correttamente date e quante errate.
Ho pensato di creare una procedura che mi cercasse per tutte le label il contenuto, se il contenuto di questa label è "corretto" allora mi inserisce in un vettore il numero della domanda cas contrario mi inserisce il numero di domanda in un altro vettore per le domande errate...
Ho scritto il seguente codice...

Dim cor (1 to 30) as integer
Dim err (1 to 30) as integer
Dim label as String
Dim i as Integer

For i=1 to 30
label="Label" &i &".Text"
if label="corretto" then
cor(i)=i
Else
err(i)=i
End if
Next

per poi visualizzare i dati dei vettori....
La procedura di sopra però non mi restituisce niente all'interno del vettore... come mai? sapete ad ogni modo darmi una mano e magari postarmi il codice esatto?
Spero che qualcuno riesca ad aiutarmi.
Grazie mille
Spero di aver fatto comprednere al meglio il mio problema...:)



Pasko Profilo | Newbie

>Dim cor (1 to 30) as integer
>Dim err (1 to 30) as integer
>Dim label as String
>Dim i as Integer
>
>For i=1 to 30
>label="Label" &i &".Text"
>if label="corretto" then
>cor(i)=i
>Else
>err(i)=i
>End if
>Next
>
>per poi visualizzare i dati dei vettori....
>La procedura di sopra però non mi restituisce niente all'interno
>del vettore... come mai? sapete ad ogni modo darmi una mano e
>magari postarmi il codice esatto?
>Spero che qualcuno riesca ad aiutarmi.
>Grazie mille
>Spero di aver fatto comprednere al meglio il mio problema...:)
>
>
non ti esce niente perchè non ti stai riferendo all'oggetto label, bensì ad una stringa chiamata label... dovresti creare un'array di oggetti, oppure riferirti alle label singolarmente senza ciclo.

86Marco Profilo | Expert

>non ti esce niente perchè non ti stai riferendo all'oggetto label,
>bensì ad una stringa chiamata label... dovresti creare un'array
>di oggetti

Scusami ma non sono molto pratico... in che senso... che significa un array di oggetti?
Sapresti farmi un esempio via codice?
Sempre che per te non sia un problema... ovviamente...
Grazie mille qualunque risposta tu mi dia...

Ho scritto questa procedura

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim cor(9) As Integer
Dim err(9) As Integer
Dim label(9) As Label
Dim i As Integer

For i = 1 To 9
If label(i).Text = "1" Then
cor(i - 1) = i
Else
err(i - 1) = i

End If

Next

End Sub

ma mi da il seguente errore:
Riferimento a un oggetto non impostato su un'istanza di oggetto.

Perchè?

Pasko Profilo | Newbie

non sono molto pratico di VB, sono più che altro un programmatore C#. L'errore che ti dà è dovuto al fatto che ogni oggetto che compone l'array dovrebbe essere istanziato e inizializzato tramite l'operatore new. Array di oggetti non ne ho mai fatti, quindi non saprei dirti di più... ho provato a fare qualche prova... informati sull'utilizzo del foreach e poi ti scorri this.controls!

86Marco Profilo | Expert

Se qualcuno riesce ad aiutarmi... vi prego... è importante... ad ogni modo grazie Pasko

rossimarko Profilo | Guru

>Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
>System.EventArgs)
> Dim cor(9) As Integer
> Dim err(9) As Integer
> Dim label(9) As Label
> Dim i As Integer
>
> For i = 1 To 9
> If label(i).Text = "1" Then
> cor(i - 1) = i
> Else
> err(i - 1) = i
>
> End If
>
> Next
>
> End Sub
>
>ma mi da il seguente errore:
>Riferimento a un oggetto non impostato su un'istanza di oggetto.
>
>Perchè?
>

Ciao,

l'errore è dovuto al fatto che il tuo array è solo dichiarato, ma non è popolato e quindi tentando di accedere ad un elemento dell'array ti da errore.

Da quanto ho capito tu nella pagina aspx hai per ogni domanda due option Vero/Falso e una label nascosta che ti dice se la risposta data è corretta o meno.

Supponendo ad esempio di avere due label così definite nella pagina aspx:
<asp:Label id="lbl1" runat="server" Visible="False" /> <asp:Label id="lbl2" runat="server" Visible="False" />

Hai due possibilità per prendere il rifermento alla label da codice. La prima è utilizzare direttamente la variabile lbl1 (o lbl2) che il designer ti crea per farti accedere a tutte le proprietà del controllo.
La seconda invece è utilizzare il metodo FindControl per ricercare il controllo all'interno della pagina. In questo caso la seconda soluzione è più comoda perchè ti consente di creare un ciclo molto semplice:

For i as integer = 1 to 2 dim lbl as Label = Ctype(Page.FindControl("lbl" & i.ToString()), Label) if lbl.Text = "Corretto" Then 'Popola array end if next

Marco

86Marco Profilo | Expert

Ok grazie marco... nel pomeriggio ci lavoro e ti farò sapere... mille grazie per l'aiuto!

amelix Profilo | Expert

La soluzione di rossimarko fa quello che chiedi tu...
Ma, sinceramente, io ti sconsiglio di fare quello che hai chiesto...

Controllare una label che deve contenere una scritta... non ha molta vita e/o flessibilità.
Aumenta la possibilità di errori strani e non prevedibili... (Esempio banale cambia la scritta "Corretto" e tu, o chi per te, non cambia la verifica...)

Una domanda... Se sai se la risposta è corretta/sbagliata x scrivere il responso... non puoi usare lo stesso metodo?

Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

86Marco Profilo | Expert

>La soluzione di rossimarko fa quello che chiedi tu...
>Ma, sinceramente, io ti sconsiglio di fare quello che hai chiesto...
>
>Controllare una label che deve contenere una scritta... non ha
>molta vita e/o flessibilità.
>Aumenta la possibilità di errori strani e non prevedibili...
>(Esempio banale cambia la scritta "Corretto" e tu, o chi per
>te, non cambia la verifica...)
>
>Una domanda... Se sai se la risposta è corretta/sbagliata x scrivere
>il responso... non puoi usare lo stesso metodo?
>

Scusami ma non credo di aver inteso la tua domanda... :)

amelix Profilo | Expert

Come fai a capire se la risposta è corretta/sbagliata?

A.
Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5