4 messaggi dal 05 giugno 2013
Salve a tutti, vorrei realizzare una pagina con una tabella contenete i dati di un database.

Ma, la cosa che m'interessa di più in tutto ciò è che la modifica dei dati stessi non avvenga su un altra pagina, ma sempre nella stessa pagina nella stessa tabella.

In poche parole ci clicco sopra, modifico il record nel database et voilà!

Chi di voi sa aiutarmi in questa situazione?
103 messaggi dal 04 ottobre 2010
Ci stanno più strade da percorrere per raggiungere il risultato che cerchi, tenterò di spiegarti la via più semplice:
L'utilizzo dei controlli interfacciabili ai DataSource.
Il concetto si suddivide in:
- Creare la parte CRUD (CReate, Update, Delete) per gestire i dati della tabella (solitamente a sua volta questo punto è suddiviso in BLL e DAL)
- Utilizzare il DataSource ObjectDataSource che chiamerà i metodi BLL per accedere alla parte CRUD
- Utilizzare un Asp.Net Control tipo la gridview che possa interfacciarsi con l'ObjectDataSource.

Un esempio pratico: se devo visualizzare e aggiornare i record impiegati da una lista estratta dall'apposita tabella, interessandomi solo del loro Nome e Cognome, dovrò approntare una classe Impiegato_DAL ed una classe Impiegato_BLL che si occuperanno di definire i metodi per operare sulla tabella. Se utilizzi un ORM come Entity Framework, questi metodi possono essere in parte autogenerati. Considerando che ogni impiegato abbia un ID per distinguerlo univocamente, il primo metodo da definire è nel DAL dove nell'oggetto Impiegato_DAL lo troveremo scritto come segue:
public void AggiornaImpiegato(Impiegato imp){
//Logica comunicazione con il Database
}
Dove imp è l'oggetto di tipo Impiegato contenente ID, Nome e Cognome.
Questo è un metodo che puoi definirti a mano, così come puoi decidere di usare un ORM per autogenerarlo. Anche la classe Impiegato può essere generata da un ORM.
La classe BLL invece, dovrà occuparsi di contenere la logica di business per controllare l'azione. Per esempio:
public void AggiornaImpiegato(Impiegato imp){
Impiegato_DAL idal = new Impiegato_DAL();
if(!string.IsNullOrEmpty(imp.Nome)&&!string.IsNullOrEmpty(imp.Cognome)){
idal.AggiornaImpiegato(imp);
}
else{
throw new Exception("Nome e cognome di un impiegato devono essere inseriti);
}
}
Stessa cosa per i metodi che retribuiscono gli impiegati:
public List<Impiegato> GetImpiegati{
Impiegato_DAL idal.....
return idal.GetImpiegati();
}
Ora, se andiamo nel designer delle form di Visual Studio, possiamo inserire un ObjectDataSource, impostare la sua proprietà ID in un qualcosa di comprensibile, tipo Impiegati_Ods, e sempre visivamente, dicendo che per la selezione degli impiegati potrà usare il metodo GetImpiegati della classe Impiegato_BLL, e per aggiornarli, stessa cosa, metodo AggiornaImpiegato dalla classe Impiegato_BLL.
Sempre nel designer, ora possiamo inserire l'oggetto che si potrà vedere nella pagina che elenca gli impiegati, scegliamo di inserire una gridview. Una volta inserita, possiamo definire un DataSource tramite la proprietà del gridview DataSourceID. Specifichiamo che il DataSourceID, è il nostro Impiegati_Ods. Dalla progettazione, è possibile visivamente impostare o meno la possibilità di usare la gridview per la modifica, cancellazione dei dati, e ti genererà da sola tutto l'occorrente necessario per raggiungere il tuo obiettivo.
La gridview ha bisogno anche di definire la proprietà DataKeyNames, ponendola ad ID perché è il campo che definisce univocamente l'impiegato.
Le nozioni sono tante, ma una volta addentrati, queste procedure diverranno meccaniche... è possibile anche da markup (codice sorgente) personalizzare la griglia a seconda di quello che ci serve. In questo mio esempio, questa griglia darebbe la possibilità di modificare o di visualizzare un ID, ma non è proprio consigliabile lasciare una tale possibilità. Spero sia tutto chiaro, buon lavoro!
Modificato da Biohazard il 28 agosto 2013 11.02 -

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.