Problemi con lo "stateless"

martedì 22 luglio 2008 - 16.24

flop79 Profilo | Newbie

Buongiorno a tutti,
premetto che sicuramente le web form non sono il mio forte, quindi perdonatemi se la cosa sembrerà banale.

Ho creato una web form, all interno di essa ho posizionato vari controlli, tra cui una "bulleteled" list.
Dopo di che ho crato una classe, semplice di questo tipo :

Public Class FileTrasm
Public NomeElemento As String
Public PercorsoFile As String
Public Descrizione As String

Sub New(ByVal Nome As String, ByVal Perc As String, ByVal Descr As String)
Me.NomeElemento = Nome
Me.PercorsoFile = Perc
Me.Descrizione = Descr
End Sub
End Class

Dopo di che nella mia web form ho dichiarato :

Private FileList As New List(Of FileTrasm)

Ora, il mio problema è che quando al "button click" vado ad aggiungere un item con :

FileList.Add(New FileTrasm("Mio", "p", FileList.Count))

Praticamente, il count rimane sempre a 0, in quanto credo non ho fornito un metodo per "ricordare" lo stato della mia lista.
inoltre vorrei asscociare questo mia lista ad una grid view, ma non riesco a atrovare i metodi corretti.

Potreste darmi qualche dritta ?

Ciao e grazie mille

Filippo

trasportation Profilo | Junior Member

Tieni presente che la pagina web viene ricreata ogni volta che tu la chiami quindi quello cambi se non decidi tu di salvarlo da qualche parte, viene reinizializzato.
Ti ho scritto al volo un esempio in C# per utilizzare il viewstate come contenitore per "ricordarti" il tuo elenco.

Ricordati solo che non devi esagerare con le voci contenuti altrimenti prendi in esame il fatto di utilizzare un DB e ricorda che la tua classe deve essere marcata con l'attributo Serializable.

public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.ViewState["miaLista"] != null)
files = (List<mioFile>)this.ViewState["miaLista"];

foreach (mioFile s in files)
{
Response.Write(s.ToString());
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = NumeroMese(TextBox1.Text).ToString();

mioFile f = new mioFile();
f.numero = 12;
f.val = "Mia stringa";
files.Add(f);

this.ViewState["miaLista"] = files;
}
}

[Serializable]
public class mioFile
{
public int numero = 0;
public string val = string.Empty;

public override string ToString()
{
return this.val + " - " + this.numero.ToString();
}
}

per quando riguarda la dataview, alla proprità DataSource deve essere assognato l'oggetto che vuoi mostrare.

R.
/*
* web: http://www.robertobeccari.it
*/

flop79 Profilo | Newbie

Ti ringrazio moltissimo della risposta, proverò immediatamente.
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