I Data Controls DataList e Repeater

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Un uso molto importante è ad esempio per la generazione di liste, utilizzando >ul< e >li<, cosa impossibile con gli altri Data Controls che aggiungono altro codice HTML, come visualizzato sempre nel codice riportato qualche riga in basso.

In definitiva, se dovete ripetere un vostro layout, il Repeater è la scelta migliore.

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
  <SCRIPT language="C#" runat="server">
// stringa di conn
string connstring = @"server=localhost;database=master;trusted_connection=true;";
  void Page_Load () {
   bindData() ;
}
  // routine di estrazione dati
void bindData () {
   // effettuo il DataBinding sul control
   // connessione
   SqlConnection conn = new SqlConnection(connstring);
   // query
   SqlDataAdapter query = new SqlDataAdapter("SELECT * FROM rubrica", conn);
   // creo il dataset
   DataSet querydataset = new DataSet();
   query.Fill(querydataset);
   myRepeater.DataSource = querydataset;
   myRepeater.DataBind ( );
}
  </SCRIPT>
  <asp:Repeater id="myRepeater" runat="server">
  <HeaderTemplate>
<ul>
</HeaderTemplate>
  <ItemTemplate>
<li><%# DataBinder.Eval(Container.DataItem, "nome") %>
  - <%# DataBinder.Eval(Container.DataItem, "telefono") %>
  - <%# DataBinder.Eval(Container.DataItem, "indirizzo") %>
</li>
</ItemTemplate>
  <FooterTemplate>
</ul>
</FooterTemplate>
  </asp:Repeater>

Immagine

Analizziamo il DataList

Per complessità, a ruota del Repeater, segue il DataList. Di default l'output viene effettuato visualizzando ogni riga all'interno di una tabella HTML.

Ciò questo control che ha in più rispetto a DataGrid e Repeater è la possibilità di specificare quanti record per riga devono essere inseriti, attraverso la proprietà RepeatColumns .

Inoltre permette di specificare il verso di ripetizione degli elementi, se orizzontale o verticale, attraverso la proprietà RepeatDirection .

Nell'allegato sono presenti due esempi di utilizzo del DataList, mentre qui sotto potete vedere come vari l'output a seconda della combinazione di questi due proprietà.

Immagine

Il DataList supporta i seguenti tipi di template:

  • alternatingItemTemplate
  • ItemTemplate
  • EditItemTemplate
  • HeaderTemplate
  • FooterTemplate
  • SeparatorTemplate

Come si può notare sono gli stessi del Repeater, ad eccezione di EditItemTemplate, che è una novità. In pratica non è altro che un particolare template che viene visualizzato quando il control viene messo in modalità Edit , ovvero di modifica dei dati contenuti.

altra differenza rispetto a Repeater, come già anticipato, riguarda il supporto diretto per gli stili, che possono essere specificati attraverso le proprietà HeaderStyle , FooterStyle , ItemStyle , etc. Si tratta di proprietà che ereditano da TableItemStyle , contenuto nel namespace System.Web.UI.WebControls e che permettono di modificare colore di sfondo, colore del testo, dimensione, eventuale bordo, stili da applicare e così via.

Sfruttando queste proprietà ogni template può avere stili differenti e quindi una resa grafica diversa.

Un esempio pratico di tutto questo è il cambio del colore di sfondo in maniera alternata, utile per migliorare l'usabilità di liste abbastanza lunge di record, oppure per visualizzare meglio la riga selezionata in modifica.

Si può specifare un ItemTemplate con un certo colore di sfondo e per cambiare quello dell'alternatingItemTemplate non è necessario specificare un nuovo template (con conseguente ripetizione dello stesso codice utilizzato in precedenza) ma è sufficiente specificare lo stile da utilizzare direttamente all'interno della proprietà alternatingItemStyle .

E' così possibile conservare un solo codice per i due template, ma modificare la resa grafica del template alternato.

altra proprietà interessante, presente solo nel DataList, è RepeatLayout , che va di pari passo con RepeatDirection e RepeatColumns poco fa menzionate.

Consente di specificare, se RepeatDirection è su Vertical e RepeatColumns su 1 (i valori di default) la modalità di rendering del DataList. Di default questo valore è su Table , che è poi il motivo per cui viene creata una tabella con i dati estratti dalla fonte, mentre è possibile impostare questo valore su Flow ed utilizzare un
quale separatore tra ogni record.

Cambiare lo stato del DataList: edit mode

Dunque il DataList a differenza del Repeater può avere stati diversi, perché permette di visualizzare i record anche in modalità di modifica .

Per fare questo è necessario impostare la proprietà EditItemIndex sulla riga corrispondente al record che si vuole modificare, tenendo a mente che si tratta di un insieme zero-based , ovvero il cui indice parte da zero. E' inutile sottolineare che è necessario specificare un EditItemTemplate , perché a differenza del DataGrid il DataList non implementa automaticamente un sistema che permetta di utilizzare una formattazione di default qualora non ne venga specificata una.

Per prima cosa dunque è necessario procedere ad associare le funzioni corrispondenti agli eventi OnEditCommand , OnUpdateCommand , OnCancelCommand , rispettivamente utilizzati per selezionare un record, aggiornare un record o annullare la selezione. Tutte e tre le funzioni ereditano da DataListCommandEventHandler .

Sfrutteremo questi eventi per eseguire il codice associato ad ogni diverso stato del control.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC