Qualcosa su di me

Mi chiamo Andrea Moro, sono un appassionato di informatica da quando avevo 8 anni e da quando mio padre mi regalò il C64.

Qualche anno più tardi, il mio primo pc e nel 1994 la prima esperienza con Internet, di cui mi sono subito innamorato e con cui oggi mando avanti la mia attività di Web Designing e posizionamento nei motori di ricerca.

View Andrea Moro's profile on LinkedIn

Calendar

<<  novembre 2008  >>
lumamegivesado
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar


RSS

Era da tempo che non riprendevo un progetto ASP.Net in mano e visto che mi ero fermato ad ASP.Net 1.1, quale buona occasione per dare una rispolverata e vedere alcuni dei nuovi controlli del 2.0.

Tra questi il FormView, interessante. Come al solito in casa Microsoft hanno fatto tanto lavoro, ma puntualmente le cose più ovvie non le mettono mai a portata di mano.

Abituato al vecchio approccio, quando avevo bisogno di accedere ad un controllo nella pagina dal code behind, dichiaravo molto semplicemente una variabile protected internal di tipo HtmlGenericControl se si trattava di un controllo HTML standard "taggato" con l'attributo runat="server" o di tipo indentico a quello impostato nell'IDE e semnplicemente accedevo al controllo utilizzando la variabile locale.

Con il FormView questo sistema non funziona. Il FormView crea una sorta di scatola chiusa inaccessibile dall'esterno. Almeno a prima vista sembra così.

Anche usando il metodo FindControl non ero in grado di accedere ai controlli dichiarati all'interno del FormView.

Dopo alcune ricerche ho finalmente capito che nel metodo OnLoad della pagina, il FormView non è stato ancora del tutto inizializzato; i controlli al suo interno ancora non esistono nello scope della pagina. Per potervi accedere è quindi necessario attendere che i controlli esistano ed in particolare utilizzare l'evento ItemCreated.

Esempio:

protected void FormView1_ItemCreated(object sender, EventArgs e)

{

    Panel myPanel = (Panel)FormView1.FindControl("myPanel");

    if (true)

        myPanel .Visible = false;

     else

        ......

}

Altra cosa che mi ha fatto perdere un pò di tempo è stata quella di cercare di accedere ai dati associati al dataSource associato al FormView. Anche qui dopo alcune ricerche la soluzione è traducibile così:

Esempio:

protected void FormView1_DataBound(object sender, EventArgs e)

{

    DataRowView r = (DataRowView)FormView1.DataItem;

    ....

}

In questo modo si cattura il contenuto del DataSource all'interno di un DatarowView, la cui propietà Row, tramite indice, consentirà di accedere al singolo dato ritornato.


Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Aggiungi commento


(Visualizza la tua icona Gravatar)  

  Country flag


  • Commento
  • Anteprima
Loading



Advanced Technology

Abruzzo SEO specialist, .Net programming and computer stuff