17 messaggi dal 20 ottobre 2012
Salve a tutti,
spronato dla buon "Satego" vi espongo il secondo quesito..che sara x voi banale:
avendo risolto il problema di access,avendo inserito una semplice gridview....volevo sapere come sarebbe possibile inserire ad esempio una textbox dinamica agganciata ad un campo del database..che magari mi si riempia come mi sposto di record in record sulla griglia...
ovviamente questa textbox mi servira per fare un update del record tramite pulsante...ma questa è un altra domanda...
abbiate pazienza
Ringrazio tutta la community
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
creare una griglia editabile è abbastanza semplice se ti affidi agli automatismi offerti dalla GridView e dall'AccessDataSource.

Partiamo dall'AccessDataSource, che è il controllo incaricato ad estrarre i dati dal database Access. Le proprietà minime che devi configurare sono DataFile (indica il percorso su disco del tuo db access) e SelectCommand (la query SQL usata per estrarre i dati).

<asp:AccessDataSource id="sorgente" DataFile="~/App_Data/nomedb.mdb"  SelectCommand="SELECT id, campo1, campo2 FROM tabella" runat="server"></asp:AccessDataSource>
Lavorare con l'AccessDataSource è molto comodo perché lasci a lui l'onere di creare una connessione al database (e di chiuderla), di creare il comando e recuperare i dati. E' più semplice rispetto all'ASP classico, tu devi soltanto limitarti a configurare il controllo come abbiamo appena visto.
Resta inteso che nel momento in cui l'AccessDataSource non ti aiutasse ad affrontare una situazione più complessa, puoi pur sempre scegliere di usare gli oggetti connection e command che usavi anche nell'asp classico (o meglio, le versioni equivalenti di ADO.NET).

Andando avanti... ora i dati vogliamo visualizzarli in una GridView, ed eccola qui, molto semplice, creerà le colonne per noi grazie al suo attributo AutoGenerateColumns="true".
<asp:GridView ID="griglia" DataSourceID="sorgente" AutoGenerateColumns="true" AutoGenerateEditButton="true" runat="server">  
</asp:GridView>
Qui noti alcune cose: l'abbiamo legata all'AccessDataSource indicandone l'id nell'attributo DataSourceID.
Poi, abbiamo anche indicato di voler creare un bottone per la modifica (AutoGenerateEditButton="true"), che verrà stampato in corrispondenza di ogni riga.

Ora manda in esecuzione la pagina. Nella griglia, cliccando uno dei "Modifica" noterai che la riga cambierà e mostrerà delle Textbox affinché tu possa modificare il contenuto di quei campi.

Al posto di "Modifica" saranno apparsi i comandi "Applica" e "Annulla" che ti consentono di persistere o cancellare le modifiche apportate.
Prova a cliccare "Applica" e noterai che si verifica un errore. Questo capita perché l'AccessDataSource non ha informazioni sufficienti per effettuare l'aggiornamento.

Così come era stato indicato un SelectCommand, bisogna anche indicare un UpdateCommand. Ecco l'esempio completo.
<asp:AccessDataSource ID="sorgente" DataFile="~/App_Data/nomedb.mdb"
SelectCommand="SELECT id, campo1, campo2 FROM tabella"
UpdateCommand="UPDATE tabella SET campo1=?, campo2=? WHERE id=?"
runat="server" ></asp:AccessDataSource>

<asp:GridView ID="griglia" DataKeyNames="id" DataSourceID="sorgente" AutoGenerateColumns="true" AutoGenerateEditButton="true" runat="server">  
</asp:GridView>
Nota i punti interrogativi nell'UpdateCommand: quelli verranno rimpiazzati automaticamente dai valori che tu hai inserito nelle Textbox.
Nella GridView ho anche dovuto aggiungere l'attributo DataKeyNames="id" per informarla che quello è il campo chiave primaria e che perciò non dovrà essere modificabile.

Ora, quando cliccherai "Applica" per persistere le modifiche, vedrai che effettivamente ciò che avevi digitato nelle Textbox è stato scritto nel database.

I controlli che abbiamo visto, GridView e AccessDataSource, possono essere personalizzati molto più di così. Studia seguendo un libro, vedrai che imparerai velocemente. Tra l'asp classico e asp.net c'è un bel salto da fare. Le pratiche di sviluppo sono molto diverse e se provi ad andare per tentativi potresti impiegare più tempo del necessario (e accumulare una certa dose di frustrazione, io me lo ricordo :).

ciao

Enjoy learning and just keep making
17 messaggi dal 20 ottobre 2012
Grazie mille!!
Ho gisutappunto mandato a riposo la texbox dinamica utilizzando gridview e dateilsview nella stessa maniera da te suggerito....
con questi controlli e' inutile diventar pazzi per far una cosa che fa lui...in automatico!!

Ne approfitot per porre una questione giusto gisuto sulla gridview e details view...
ho esigenza che un campo particolare del mio record vada memorizzato in maiuscolo nel DB..un semplice campo testo a 255 caratteri...ho visto che nn c'e modo di settare in maiuscolo il campo della gridview e detailsview..cosicche ad inserimento mi ritrovi il dato gia in uppercase....ho provato anche a mettere lo statement UPPER() nell'insert automatizzata..ma nn funziona sbalgio qualcosa...la posto qui...magari mi potete aiutare :)

QUERY NORMALE SENZA UPPER
InsertCommand="INSERT INTO [RESIDENTI] ([NOMINATIVI], [NOMINATIVI2], [APPARTAMENTO], [PUBBLICITA], [URLPUBB]) VALUES (?, ?, ?, ?, ?)"

QUERY CON UPPER CHE NN VA
InsertCommand="INSERT INTO [RESIDENTI] ([NOMINATIVI], [NOMINATIVI2], [APPARTAMENTO], [PUBBLICITA], [URLPUBB]) VALUES (upper(?), ?, ?, ?, ?)"

grazie x la pazienza
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, prego! Dato che si tratta di Access, prova con la funzione UCASE, anziché UPPER.

Enjoy learning and just keep making
17 messaggi dal 20 ottobre 2012
NIENTE DA FARE..seguendo i tuoi suggerimenti ho riscritto la query cosi:

InsertCommand="INSERT INTO [RESIDENTI] ([NOMINATIVI], [NOMINATIVI2], [APPARTAMENTO], [PUBBLICITA], [URLPUBB]) VALUES (UCASE(?), ?, ?, ?, ?)"

ora sintatticamente funziona....ma in runtime...i valori vengono inseriti sempre IN PICCOLO!!

Ho provato anche a dargli in pasto la query direttamente su access....LI FUNZIONA!!!

A questo punto....nn so dove parare....

:(

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.