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 1.0/1.1
CollectionBase
martedì 09 settembre 2003 - 18.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
1234
Profilo
| Newbie
36
messaggi | Data Invio:
mar 9 set 2003 - 18:46
Ciao,
sto modificando lo StarterKit TimeTricker del sito www.asp.net.
Sto cercando di sfruttare una variabile si sessione definita nel Global.asax in questo modo:
<object id="AppMonth" runat="server" scope="session" class="TimeTracker.BusinessLogicLayer.MonthCollection"/>
In questo modo dovrei in teoria poter vedere su tutta l'applicazione la variabile di sessione Session["AppMonth"] a condizione che ad ogni routine imposti quanto segue:
MonthCollection myMonthCollection = (MonthCollection) Session["AppMonth"];
La classe MonthCollection è una sottoclasse di CollectionBase.... ecco allora la mia domanda: c'è qu che ha mai lavorato con questa classe e che mi può dare qualche dritta. I miei obiettivi sono i seguenti:
- la mia classe MonthCollection dovrebbe gestire l'aggiunta, la rimozione, il salvataggio di oggetti di tipo Activity
- dovrebbe anche permettere di caricare in una MonthCollection tutte le attività del mese corrente
- inoltre ho bisogno che la classe MonthCollection rimanga in memoria fino a quando non effettuo un salvataggio globale (per esempio, dopo aver scelto un'altra pagina)
Grazie
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
mer 10 set 2003 - 12:25
Ciao,
collectionbase è la classe base per creare collezioni strongly typed (tipizzate), cioè che accettano nella collezioni solo oggetti che derivano da un determinato tipo .NET.
Implementa già alcuni metodi per rimuovere un elemento, o tutti gli elementi, etc.
Ecco la reference:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemcollectionscollectionbasememberstopic.asp?frame=true
E' da implementare il metodo Add per permettere di aggiungere un elemento alla collezione.
Gli elementi vengono memorizzati internamente all'oggetto, tramite la proprietà InnerList, che è un ArrayList. Sarà lì dentro che dovrai aggiungere i tuoi oggetti.
Qui trovi un esempio completo (sia in C# sia in VB.NET) di come implementare la classe:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemcollectionscollectionbaseclasstopic.asp?frame=true
Spero di esserti stato d'aiuto.
Ciao!
---
Stefano Giannone [MCP .NET]
stefano_NOSPAM@dotnethell.it (per scrivermi togliete "_NOSPAM" dall'indirizzo)
1234
Profilo
| Newbie
36
messaggi | Data Invio:
mer 10 set 2003 - 14:59
I link che mi hai dato li avevo già stampati.... mi sa che il problema principale sta nella variabile di sessione, quella che dovrebbe essere attiva sempre e che eredita tutto da CollectionBase.
Io l'ho definita in questo modo nel Global.asax:
<object id="AppMonth" runat="server" scope="session" lass="TimeTracker.BusinessLogicLayer.MonthCollection"/>
ed ho impostato quanto segue sempre in Global.asax:
protected void Session_Start(Object sender, EventArgs e)
{
MonthCollection myMonthCollection = new MonthCollection();
Session["AppMonth"] = myMonthCollection;
}
In questo modo dovrei in teoria poter vedere su tutta l'applicazione la variabile di sessione Session["AppMonth"] a condizione che ad ogni routine imposti quanto segue:
MonthCollection myMonthCollection = (MonthCollection) Session["AppMonth"];
Domanda: ha senso quello che ho fatto? In questo modo è possibile sfruttare tutte le proprietà di CollectionBase in qualsiasi momento?
Aggiungo il codice di tAIMx_MonthCollection:
using System;
using System.Collections;
namespace mioProgetto
{
/// <summary>
/// Summary description for tAIMx_MonthCollection.
/// </summary>
public class MonthCollection : CollectionBase
{
public MonthCollection()
{
//
// TODO: Add constructor logic here
//
}
public Activity this[int indexAct]
{
get
{
return (Activity) List[indexAct];
}
set
{
List[indexAct] = value;
}
}
public void Add(Activity anActivity)
{
List.Add(anActivity);
}
public int IndexOf (Activity value)
{
return(List.IndexOf(value));
}
public void Insert (int index, Activity value)
{
List.Insert(index, value);
}
public void Remove(Activity value)
{
List.Remove(value);
}
public bool Contains(Activity value)
{
return(List.Contains(value));
}
}
}
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
mer 10 set 2003 - 15:11
mah, io toglierei questo, che mi sembra inutile:
<object id="AppMonth" runat="server" scope="session" lass="TimeTracker.BusinessLogicLayer.MonthCollection"/>
e lascierei soltanto questo:
protected void Session_Start(Object sender, EventArgs e)
{
MonthCollection myMonthCollection = new MonthCollection();
Session["AppMonth"] = myMonthCollection;
}
In questo modo potrai recuperare in ogni momento la tua collection con:
MonthCollection myMonthCollection = (MonthCollection)Session["AppMonth"];
fare le tue operazioni di Add, Remove, recupero degli oggetti, etc.
Ricordati però, ogni volta che modifichi la collection, di riposizionare il tutto in Session, facendo di nuovo:
Session["AppMonth"] = myMonthCollection;
Spero di esser stato chiaro.
Ciao!
---
Stefano Giannone [MCP .NET]
stefano_NOSPAM@dotnethell.it (per scrivermi togliete "_NOSPAM" dall'indirizzo)
1234
Profilo
| Newbie
36
messaggi | Data Invio:
ven 12 set 2003 - 09:23
Ci ho rinunciato.... non lavoro più con le CollectionBase... ma torno ad un suo sotto oggetto... gli ArrayList: anche questo fanno parte della libreria Collection e lavoro molto meglio con queste.... almeno credo.
Grazie
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 !