Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Ordinare la lista delle tabelle in un sito Dynamic Data

La pagina iniziale di un sito Dynamic Data mostra l'elenco delle tabelle del data model in ordine alfabetico. Se si vuole modificare tale ordinamento, è necessario indicare al sistema l'ordine in cui vogliamo che siano mostrate le informazioni. Per fare questo, innanzi tutto aggiungiamo un nuovo Custom Attribute al nostro progetto:

[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
public class TableOrderAttribute : Attribute
{
public int Order { get; private set; }

public TableOrderAttribute()
{
Order = int.MaxValue;
}

public TableOrderAttribute(int order)
{
Order = order;
}

public static TableOrderAttribute Default = new TableOrderAttribute();
}

Ora dobbiamo decorare con l'attributo TableOrder le classi che rappresentano le tabelle. Ad esempio, supponiamo di avere una tabella di nome Tasks che vogliamo sia mostrata prima di tutte le altre; dovremmo definire una classe parziale in questo modo:

namespace DynamicDatasite
{
[TableOrder(0)]
public partial class Task
{ }
}

Dove DynamicDataSite è il root namespace del sito. In questo esempio abbiamo specificato la posizione 0 per la tabella. Poiché, di default, l'ordine di una tabella è int.MaxValue, per mostrare solo alcune tabelle prima delle altre, è sufficiente decorare queste ultime con l'attributo TableOrder, senza dover modificare quelle la cui posizione non ci interessa.

Infine, si deve modificare la seguente istruzione, contenuta nell'evento Page_Load file Default.aspx.cs:

System.Collections.IList visibleTables = MetaModel.Default.VisibleTables;

In modo che diventi:

System.Collections.IList visibleTables = MetaModel.Default.VisibleTables
.OrderBy(table => ((TableOrderAttribute)table.Attributes[typeof(TableOrderAttribute)]).Order).ToList();

Semplicemente, ordiniamo le tabelle sulla base del valore di TableOrder.Order. Non è necessario controllare l'esistenza di tale attributo perché, avendo specificato una proprietà statica di nome Default nella sua definizione, il suo valore sarà automaticamente applicato alle tabelle che non la presentano.

Print | posted on Monday, April 27, 2009 1:05 AM | Filed Under [ ASP .NET Orcas & .NET 3.5 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET