[ASP 2.0/vb/sql 2005 exp] Leggere valore campi formview e binding su g...

giovedì 28 agosto 2008 - 11.53

Devil Profilo | Junior Member

Ciao a tutti,
Sto cercando di fare una cosa di questo tipo:
Una pagina in cui c'è una formview composta da
alcune text box che vengono settate con valori provenienti da un sqldatasource, una gridview e
poi ancora text box .

Diciamo per esempio (per capire un pò la logica del progetto) che nelle prime box ci sono dati come nome cognome data nascita, altezza e altri dati personali di un progettista, poi nella grid view c'è l'elenco dei record che indicano ad esempio i progetti realizzati con alcuni dati, poi nelle altre text box ci sono ad esempio data assunzione,ore permesso o altro. (Devo mantenere una struttura il più simile a questa)

Sperando di essere stato esauriente, vi pongo alcune domande:

Per ottenere i record dei progetti relativi ad ogni progettista devo eseguire una query con parametro (es IDProgettista) ma come faccio ad accedere ad una text box e leggerne il valore? Come posso accedere alla gridView e bindare il risultato?

Ipotizzando di riuscire a leggere il valore, ogni volta che cambia il progettista (cioè scorrendo i record con la formView) devo connettermi al db per interrogarlo con una nuova query parametrica e ri-bindare i valori. E' una cosa giusta?

Se non voglio usare una text box per memorizzare l'id del progettista, è possibile usare un campo nascosto?

La costruzione della pagina è esatta oppure devo metter fuori dalla formView la gridview?

Grazie anticipatamente per eventuali indicazioni.






alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

>Per ottenere i record dei progetti relativi ad ogni progettista
>devo eseguire una query con parametro (es IDProgettista) ma come
>faccio ad accedere ad una text box e leggerne il valore?
Utilizzando il metodo FindControl nell'evento DataBound, andando a ricercare per l'id del controllo assegnato nella formview. Con il metodo FindControl ritorni l'istanza del controllo e poi puoi semplicemente castarla in un TextBox per ricavarne il valore della proprietà Text.

Control.FindControl Method (string)
http://msdn.microsoft.com/en-us/library/486wc64h.aspx

>Come posso accedere alla gridView e bindare il risultato?
Allo stesso modo puoi cercare la gridview, tramite il metodo descritto prima, andando a cambiare il datasource della griglia con quello "filtrato" ed eseguendo il DataBind. Ma preferirei mettere fuori la griglia dalla formview..

>Ipotizzando di riuscire a leggere il valore, ogni volta che cambia
>il progettista (cioè scorrendo i record con la formView) devo
>connettermi al db per interrogarlo con una nuova query parametrica
>e ri-bindare i valori. E' una cosa giusta?
è una soluzione
Potresti anche pensare di fare una griglia per l'elenco dei progettisti ed al select valorizzare una griglia ulteriore sotto..
Dipende dal layout che vuoi ottenere..

>Se non voglio usare una text box per memorizzare l'id del progettista,
>è possibile usare un campo nascosto?
Puoi tenerlo nel datasource senza renderlo visibile nella formview. Poi, per accedere al valore, devi ricavare il datasource della formview e ricavare il valore che ti serve.
>
>La costruzione della pagina è esatta oppure devo metter fuori
>dalla formView la gridview?
Io la metterei fuori, anche per facilità di gestione.

>Grazie anticipatamente per eventuali indicazioni.
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Devil Profilo | Junior Member

Ottimo..era proprio il findcontrol che i serviva!!!
Grazie
Binding eseguito!!

Mi hai detto poi di ricavare l'id dal datasource della formView. E' vero, ma dentro ci sono tanti id (tanti record ricavati dalla select sulla tabella progettisti) mentre io voglio che nella gridview vengano visualizzati solo i lavori relativi al progettista che si sta visualizzando in quel momento ecco perchè cerco come riferimento sicuro un id (magari nascosto) che naturalmente cambierà ogni volta che , attraverso la formView, scorro i vari record e di conseguenza verrà aggiornata la pagina con tutti i nuovi dati. Sbaglio a ragionare così?

Probabilmente, se me lo richiederanno, svilupperò il discorso griglia-->select-->dettaglio..io lo propongo

Avevo pensato di mettere fuori la gridview ma mi cambia la grafica e volevo mantenere un'interfaccia simile a quella che fu a suo tempo sviluppata in access 97 da altri e che è in uso da parecchio tempo.

Cosa ne pensi?



alx_81 Profilo | Guru

>Mi hai detto poi di ricavare l'id dal datasource della formView.
>E' vero, ma dentro ci sono tanti id (tanti record ricavati dalla
>select sulla tabella progettisti) mentre io voglio che nella
>gridview vengano visualizzati solo i lavori relativi al progettista
>che si sta visualizzando in quel momento ecco perchè cerco come
>riferimento sicuro un id (magari nascosto) che naturalmente cambierà
>ogni volta che , attraverso la formView, scorro i vari record
>e di conseguenza verrà aggiornata la pagina con tutti i nuovi
>dati. Sbaglio a ragionare così?
Allora, la formview avrà un oggetto come datasource, che ad esempio potrebbe essere un datatable. All'interno di esso ci sarà un campo "IDProgettista" che corrisponde ai dati visualizzati. Tu basta che vai a prendere l'IDProgettista corrente..
Poi usi quello e lo passi alla griglia..

>Avevo pensato di mettere fuori la gridview ma mi cambia la grafica
>e volevo mantenere un'interfaccia simile a quella che fu a suo
>tempo sviluppata in access 97 da altri e che è in uso da parecchio
>tempo.
Se tieni fuori dal formview la griglia, puoi ottenere comunque un layout simile ad un master detail di access.
basta lavorare coi div e con gli stili.. Sinceramente non vedo un grosso legame tra i controlli e la grafica, con la quale poi, alla fine, fai quasi tutto quello che vuoi. Prova a pensare ad un formview, che scorre record per record i progettisti.. Ogni volta che ti sposti su un record differente, valorizzi la source di una gridview che è esterna alla form view.. Non è necessario che sia al suo interno.. Non trovi?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Devil Profilo | Junior Member

ah ecco...id "corrente"..è vero..

Per caso sai come si chiama l'evento della formview per il quale eseguirò l'aggiornamento della gridview?
(così su due piedi...altrimenti dopo lo cerco!)

Si si lo so che grafica e funzionalità sono ben separati e gestibili diversamente e probabilmente la poca pratica mi fa perdere in un bicchier d'acqua.
anche con i css sono alle prime armi per cui ci vuol tempo comunque pare che sia riuscito ad ottenere qualche risultato.

Un dubbio: interrogare il db ad ogni cambio di record nella form non rallenta il tutto e carica la rete? Non che sia un grosso problema perchè comunque non penso che mi troverò mai più di 4 o 5 utenti connessi contenporaneamente in quanto l'applicazione è aziendale e riservata solo ad un particolare ufficio ma in termini di velocità gradirei risposte veloci. (onde evitare lamentele dei colleghi!)

?

alx_81 Profilo | Guru

>ah ecco...id "corrente"..è vero..
>
>Per caso sai come si chiama l'evento della formview per il quale
>eseguirò l'aggiornamento della gridview?
>(così su due piedi...altrimenti dopo lo cerco!)
mah guarda, secondo me puoi guardare il PageIndexChanged oppure lo stesso DataBound..

>Si si lo so che grafica e funzionalità sono ben separati e gestibili diversamente e probabilmente la poca pratica mi fa perdere in un bicchier d'acqua.
>anche con i css sono alle prime armi per cui ci vuol tempo comunque pare che sia riuscito ad ottenere qualche risultato.

>Un dubbio: interrogare il db ad ogni cambio di record nella form non rallenta il tutto e carica la rete? Non che sia un grosso
>problema perchè comunque non penso che mi troverò mai più di 4 o 5 utenti connessi contenporaneamente in quanto l'applicazione
>è aziendale e riservata solo ad un particolare ufficio ma in termini di velocità gradirei risposte veloci. (onde evitare lamentele dei colleghi!)
No, se vai per id e hai correttamente impostato gli indici sul database, il traffico è ridotto con quel bassissimo numero di utenze..
Sarebbe peggio caricare tutto un resultset di tante righe..


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Devil Profilo | Junior Member

Grazie di tutto..ottima consulenza!

Ciao alla prossima!
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