Aiuto su popolamento textbox da db

lunedì 24 settembre 2007 - 11.04

ertulio Profilo | Senior Member

Salve, ho il seguente codice per visualizzare in dei textbox o valori contenuti in un database access:

command.CommandText() = "Select * From CalssificA "
Dim reader As OleDbDataReader = command.ExecuteReader()
If Not Page.IsPostBack Then
While reader.Read()

If VarType(reader("Pt")) <> 1 Then
nataTextBox.Text = reader("Pt")

ncagTextBox.Text = reader("Pt")

ncatTextBox.Text = reader("Pt")
nempTextBox.Text = reader("Pt")
nfioTextBox.Text = reader("Pt")
ngenTextBox.Text = reader("Pt")
nintTextBox.Text = reader("Pt")
njuTextBox.Text = reader("Pt")
nlazTextBox.Text = reader("Pt")
nlivTextBox.Text = reader("Pt")
nmilTextBox.Text = reader("Pt")
nnapTextBox.Text = reader("Pt")
npalTextBox.Text = reader("Pt")
nparTextBox.Text = reader("Pt")
nregTextBox.Text = reader("Pt")
nromTextBox.Text = reader("Pt")
nsieTextBox.Text = reader("Pt")
nsampTextBox.Text = reader("Pt")
ntorTextBox.Text = reader("Pt")
nudiTextBox.Text = reader("Pt")

End If
End While
End If


Il mio problema è che nei textbox viene visualizzato lo stesso valore per ogni textbox anche se nel db sono tutti diversi. Mi spiego meglio se il mio database è cosi composto
Atalanta 5
Milan 6
Napoli 10
Fiorentina 8
Udinese 3

i text box contengono sempre l'ultimo valore contenuto nel db in questo caso udinese 3 i valori di tutti i textbox sono tutti 3, se invece il db finiva con fiorentina 8 tutti i textbox contenevano 8. Dove sbaglio? Grazie



http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alx_81 Profilo | Guru

>Salve, ho il seguente codice per visualizzare in dei textbox
>o valori contenuti in un database access:
>
>command.CommandText() = "Select * From CalssificA "
>Dim reader As OleDbDataReader = command.ExecuteReader()
>If Not Page.IsPostBack Then
>While reader.Read()
>
>If VarType(reader("Pt")) <> 1 Then
>nataTextBox.Text = reader("Pt")
>
>ncagTextBox.Text = reader("Pt")
>
>ncatTextBox.Text = reader("Pt")
>nempTextBox.Text = reader("Pt")
>nfioTextBox.Text = reader("Pt")
>ngenTextBox.Text = reader("Pt")
>nintTextBox.Text = reader("Pt")
>njuTextBox.Text = reader("Pt")
>nlazTextBox.Text = reader("Pt")
>nlivTextBox.Text = reader("Pt")
>nmilTextBox.Text = reader("Pt")
>nnapTextBox.Text = reader("Pt")
>npalTextBox.Text = reader("Pt")
>nparTextBox.Text = reader("Pt")
>nregTextBox.Text = reader("Pt")
>nromTextBox.Text = reader("Pt")
>nsieTextBox.Text = reader("Pt")
>nsampTextBox.Text = reader("Pt")
>ntorTextBox.Text = reader("Pt")
>nudiTextBox.Text = reader("Pt")
>
>End If
>End While
>End If
>
>
>Il mio problema è che nei textbox viene visualizzato lo stesso
>valore per ogni textbox anche se nel db sono tutti diversi. Mi
>spiego meglio se il mio database è cosi composto
Tu stai continuando a leggere sempre lo stesso campo riga per riga.. quindi segni, per ogni riga sempre il campo pt. siccome è un ciclo, alla fine ti trovi il valore dell'ultima squadra letta.

Se non ho capito male, tu devi ottenere una griglia in cui mettere per ogni squadra il suo punteggio di classifica. giusto?
se sì, cambia approccio, utilizza un repeater magari, nel cui templateitem vai a mettere una sola text box e a runtime, per ogni riga, vai a mettere il corretto valore. L'approccio che usi tu è tutt'altro che dinamico e ti impone (anno per anno ) di cambiare le textbox..
Prova col repeater..
ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

ertulio Profilo | Senior Member

Ciao, ti ringrazio per la risposta, hai capito bene che il tutto serve a visualizzare una classifica, ma il mio scopo è quello di visualizzare i valori per poi aggiornarli con una update, non ho mai usato repeter, volendo modificare il mio procedimento correttamente come posso procedere? Grazie 1000
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alx_81 Profilo | Guru

>Ciao, ti ringrazio per la risposta, hai capito bene che il tutto
>serve a visualizzare una classifica, ma il mio scopo è quello
>di visualizzare i valori per poi aggiornarli con una update,
>non ho mai usato repeter, volendo modificare il mio procedimento
>correttamente come posso procedere? Grazie 1000
Ok, se devi modificare, usa il gridview con la funzione di editing in place..
leggiti bene il link sulla classe gridview..
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx
http://msdn2.microsoft.com/en-us/library/8bb3971z.aspx

vedrai che non è complesso..
Alx81 =)

http://blogs.dotnethell.it/suxstellino

alx_81 Profilo | Guru

>Ciao, ti ringrazio per la risposta, hai capito bene che il tutto
>serve a visualizzare una classifica, ma il mio scopo è quello
>di visualizzare i valori per poi aggiornarli con una update,
>non ho mai usato repeter, volendo modificare il mio procedimento
>correttamente come posso procedere? Grazie 1000
Ok, come ti dicevo, ti consiglio l'editing in place. Si tratta di una funzionalità che asp.net ti fornisce per rendere modificabili, direttamente su una griglia, tutti o alcuni dei campi della sorgente.
I componenti che devi utilizzare sono un datasource (Trascina sul designer il SQLDataSource se ti può andare bene) ed un gridview..
Ecco come appare il gridview:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come vedi ci sono 3 campi definiti come BoundField che sono direttamente collegati alla sorgente (tabella classifica ad esempio). Oltre ai tre campi, uno dei quali è invisibile (puoi anche ometterlo), c'è anche un CommandField che è il link per la modifica, autogenerato dallo smart tag del gridview. Il CommandField di permette di attivare la modifica dei campi non definiti come ReadOnly (per capirci, la squadra non deve essere modificata, e quindi ha l'attributo ReadOnly a True).
Questo gridview si lega ad un SQLDataSource:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come vedi il SQLDataSource è legato ad una stringa di connessione che Visual Studio ha automaticamente creato quando crea il datasource. Inoltre puoi trovare due tipi di command, il SelectCommand per la lettura dei record e l'UpdateCommand che serve proprio per eseguire l'aggiornamento in base ai parametri passati sotto nella sezione UpdateParameters. Quando crei il datasource, VisualStudio crea tutti i comandi da solo. In questo caso, siccome ho definito la squadra non aggiornabile, ho rimosso dal comando precedentemente creato i campi che non mi servono.

Questo è tutto.
Fa praticamente tutto da solo. Chiaro è che funzionalità avanzate sono da programmare, ma già questo esempio a mio avviso è più che utile per risolvere il tuo problema. Andando per step dovrai quindi:

DATA SOURCE
- Trascinare il tuo SQLDataSource sul designer, impostandolo tramite la voce "Configure Data Source.."
- Selezionare o aggiungere una connectionString dall'interfaccia di creazione del Data Source.
- Creare il comando di lettura selezionando tabella e campi
- Spostarsi sulla sezione advanced per creare i comandi di inserimento, cancellazione e modifica

GRID VIEW
- Trascinare il GridView sul designer
- Collegare il Data Source creato alla griglia tramite la combo di selezione
- Spostarsi sulla sezione edit column aggiungendo le colonne BoundField, definendo quelle in sola lettura e aggiungendo il pulsante di modifica


ASP.NET
- Controllare che comandi e parametri siano corretti per le tue esigenze

Comunque ti allego l'esempio.
Dovrai crearti una tabella Classifica con tre campi, un IDClassifica intero e chiave primaria, un campo Squadra varchar(30) ed un campo Punti, tinyint.

Spero questo possa aiutarti
ciao!


Alx81 =)

http://blogs.dotnethell.it/suxstellino

ertulio Profilo | Senior Member

Ciao, grazie 1000 funziona, però volevo chiederti una cosa, dal momento in cui devo aggiornare tutti i campi non si può ottimizzarlo dando la possibilita di poter modificare tutti i campi insieme e aggiornarli insieme senza pigiare ogni volta su modifica e aggiorna? Grazie 1000
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alx_81 Profilo | Guru

>Ciao, grazie 1000 funziona, però volevo chiederti una cosa, dal
>momento in cui devo aggiornare tutti i campi non si può ottimizzarlo
>dando la possibilita di poter modificare tutti i campi insieme
>e aggiornarli insieme senza pigiare ogni volta su modifica e
>aggiorna? Grazie 1000
Puoi fare un TemplateField con un textbox per i punti al posto del BoundField. Poi fai un pulsantino che salva ciclando su tutte le righe..
Alx81 =)

http://blogs.dotnethell.it/suxstellino
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