rosalba

Il blog di Rosalba Fiore [Microsoft Certified Trainer]
posts - 398, comments - 583, trackbacks - 4693

My Links

News

Article Categories

Archives

Post Categories

Image Galleries

Al primo posto

Alcune delle Donne Attive

Alcuni dei ferri del mestiere di una MCT

Certificazioni Informatiche

elearning...funziona solo in alcuni casi!!!

Eventi

Gli MCT nel mondo

La mia zone

Link tecnici

Link un pò così

Panoramica altre Community

Post-it Articoli e post di MCT, MVP ect

Windows Vista

[70-315] Custom Web Controls

Visto che ieri ho battuto la fiacca con i post, oggi ne pubblicherò più di qualcuno nel corso della giornata così mi farete compagnia mentre ripasso le ultime cose, tanto la giornata è torrida meglio che me ne sto al fresco a casa :D . Concluderemo la giornata con l'argomento più gettonato tra i miei post ADO.NET

(n.d.r. pensate uno solo di loro ha realizzato oltre 340 visite e gli altri sono tutti sopra i 180 contatti, ma che farà Ado.Net ai programmatori italiani!!!)

Dunque iniziamo con i Custom Web Controls (l'indicherò per brevità con CWC).

Supponiamo di voler utilizzare più controlli per fare una specifica operazione, sarebbe comodo poter disporre di un unico controllo che faccia tutto : D

CREAZIONE

1. aggiungiamo al progetto una pagina CWC (.ascx)

2. disegniamone l'interfaccia visuale nel designer (attenzione supporta solo flow layout, se vogliamo posizione i controlli sulla pagina utilizzando una grid layout, aggiungiamo un controllo HTML Grid Layout Panel come container) 

3. scriviamo il codice ossia proprietà, metodi ed eventi (come al solito doppio click sul designer), notiamo che:

    • la "base class" per i CWC è System.Web.UI.UserControl
    • l'evento Load del CWC avviene quando esso viene caricato dalla web form che lo contiene, dunque avviene dopo il load della Web Form
    • Creiamo metodi e proprietà che poi la web form potrà utilizzare nel modo seguente:
      • creiamo delle proprietà e metodi public 
      • scriviamo il codice che risponde all'evento
      • se vi sono delle modifiche tra le pagine visualizzate che le proprietà e metodi devono conservare scriviamo il codice utilizzando ViewState  

//supponiamo d'aver creato uno spin utilizzando due bottoni
//incrementiamo e decrementiamone il valore in funzione del bottone utilizzato
public int Value
{
    
get
    
{
        
return Convert.ToInt32(ViewState["Value"]);
    }
    
set
    
{
        ViewState["Value"]=
value;
    }
}

......

private void bottonegiu_Click(object sender, System.EventArgs e)

this.Value -=1;
}

private void bottonesu Click (object sender, System.EventArgs e)
{
this.Value +=1;
}

4. aggiungiamo il controllo alla web form trascinandolo dalla Solution Explorer, ed avviene:

  • VS.Net genera una direttiva @Register
  • dei tags HTML del tipo

<%@ Register TagPrefix="ucl" TagName"Spin" Src="Spin.ascx" %>
<%@ Page 
Language="vb" AutoEventWireup="false"
Codebehind="UserControl.aspx.vb" Inherits="Ugidotnet.UserControl"%>
<
HTML>
<
body>
<
form id="Pagina" method="post" runat="server">
<uc1:Spin 
id="Spin1" runat="server" Value="5"> </uc1:Spin>
<
/form>
<
/body>
<
/HTML>

 

5. dichiarazioni varie, del genere:

protected Spin
//
//visualizziamo il valore assunto dello Spin 
//in una text box chiamata textboxvalore
//Attenzione !!!
//notare l'utilizzo dell'evento PreRender...vi ricorate la questione dell'evento Load della Web Form :D

private void Page_PreRender(object sender, System.EventArgs e)
{
textboxvalore.Text=Spin1.Value.ToString();
}

// ora vediamo come si ripsonde ad un'azione
//1. dichiariamo l'evento Click
public event EventHandler Click;
//2. creiamo il metodo
protected virtual void OnClick(EventArgs e)
{
if(Click !=null)
{
Click(
this,e);
}
//3. ok ora "raisiamolo"
private void bottonegiu Click(object sender, System.EventArgs e)
{
//decrementiamo il valore
this.Value-=1;
//chiamiamo il metodo
OnClick(e);
}

 

Note per la Grid Layout

Se proprio la vogliamo occorre utilizzare l'attributo Style. Vediamo brevemente due esempi di codice

<UserContro:Spin id="Spin1" runat="server" Value="5"
style="Z-INDEX.....

public string Style
{
get
    
{
    
return pannello1.Attributes["styel"];
    }
set
    
{
    pannello1.Attributes["style"]=
value;
    }
}

Quindi supponiamo d'aver realizzato questa meraviglia, per poterlo utilizzare poichè non è compilato nell'assembly occorre che:

  • una copia del controllo deve esiste in ogni Progetto Web Application che lo utilizzi
  • non potendo aggiungerlo alla toolbox bisogna trascinarlo dalla Solution Explorer sulla Web Form
  • poichè il controllo è inizializzato dopo il loads della Web Form, occorre che il valore delle proprietà dell'user control non venga updatato prima dopo dell'evento load della Form

A dopo!!! Sperando che ALICE riprenda a funzionare…sono nuovamente con i 56 kkkkkkkkkkkkkkkkkk

powered by IMHO 1.3

 

Print | posted on mercoledì 24 maggio 2006 17:26 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET