Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Conservare un riferimento a un DataSet in una pagina ASP.NET
mercoledì 21 gennaio 2009 - 11.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
mer 21 gen 2009 - 11:11
Ciao,
Nella mia pagina ASP.NET ho impostato due TAG asp:button e un asp:DataGrid. Il primo, crea un oggetto DataSet e lo setta con i valori caricati da un DB quando viene premuto (tutto da codice C#). Il secondo collega il mio DataSet a un DataGrid.
Dato che uscendo dal gestore dell'evento click del primo pulsante si perde il riferimento a DataSet, l'ho dichiarato come attributo della classe. Anche in questo caso si perde ogni riferimento quando la pagina viene ricaricata, allora l'ho dichiarato static.
A questo punto ho un dubbio. Se ho capito bene, un attributo static è conservato in area stack e il suo valore è comune a ogni istanza della classe nella quale è dichiarato. Ma allora questo vuol dire che chiunque si connette al server può visualizzare i contenuti del DataSet con informazioni riservate relative a un utente diverso?
Se così fosse come potrei conservare il riferimento al dataSet legandolo a un solo utente?Il codice (è un esempio per capire il funzionamento dei DataSet e DataGrid) a grandi linee è il seguente:
...
private static DataSet data;
...
protected void BCarica_Click(object sender, EventArgs e)
{
string stringaDiConnessione = "Data Source=.\\SQLEXPRESS;" +
"AttachDbFilename=|DataDirectory|\\Utenti.mdf;" +
"Integrated Security=True;" +
"User Instance=True";
string query = " SELECT * FROM Utenti ";
SqlConnection connessione = new SqlConnection(stringaDiConnessione);
SqlDataAdapter adapter = new SqlDataAdapter(query, connessione);
data = new DataSet();
adapter.Fill(data, "Utenti");
DataTable table = null;
DataColumn column = null;
DataRow row = null;
table = data.Tables["Utenti"];
column = table.Columns[0];
row = table.Rows[0];
TBNome.Text = row[column].ToString();
}
protected void BVisualizza_Click(object sender, EventArgs e)
{
GVUtenti.DataSource = data;
GVUtenti.DataBind();
}
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 21 gen 2009 - 14:50
Ciao,
ogni post che fai alla pagina è una richiesta a se stante quindi le variabili in memoria vengono perse. Per salvare dei dati tra un post e l'altro hai vari strumenti:
http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx
Per quanto riguarda i daset potresti salvarlo nella session o nella cache con una chiave differente per ogni utente.
Ovviamente occhio alla dimensione del dataset perchè comunque sono dati che rimangono in memoria e quindi se hai tanti accessi occupi tanta ram
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
mer 21 gen 2009 - 15:20
Mmmh scusa ma non ho mai usato le variabili di sessione, non è tanto che lavoro su .NET. In pratica potrei creare una variabile DataSet con altre variabili che potrebbero essere per esempio i dati di accesso al sito di un utente e fare un controllo ad ogni accesso al DS giusto?
La stessa cosa può essere fatta anche per caricare il back-office o il front-office a seconda dell'utente, al caricamento di ogni pagina? Scusa se approfitto di questo thread per chiedertelo ma visto che si è parlato di sessione colgo la palla al balzo...anche perchè sto innondando di thread il forum da un po di giorni...sto seppellendo le richieste di altri utenti...poveracci!!!
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 21 gen 2009 - 15:31
La sessione è una collection all'interno del quale puoi inserire vari oggetti.
Se nella tua pagina scrivi Session.Add() vedrai che il metodo ti consentirà di inserire dei valori.
Per accedere ad uno di questi puoi scrivere Session("NomeChiave").
La session si riferisce all'utente loggato ed è valida solo per il sito corrente.
La cache invece è unica per tutti gli utenti e puoi accederci da ogni pagina scrivendo Cache.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
mer 21 gen 2009 - 15:44
Ok, grazie, sei stato molto chiaro, approfondisco su MSDN
Torna su
Stanze Forum
Elenco Threads
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 !