aprile 2009 - Posts

Personalmente, trovo la Home Page di un sito Dynamic Data piuttosto brutta, dal momento che presenta un anonimo elenco delle tabelle presenti nel Data Model, una sotto l'altra, all'interno di una griglia. Ma basta un po' di inventiva per trasformare la pagina iniziale in qualcosa come questo:

DD_HomePage

Le tabelle sono rappresentate da immagini su cui ho definito un effetto onmouseover, per "riquadrarle" in automatico al passaggio del mouse. E, già che c'ero, ho definito un sistema dinamico per realizzare una soluzione di questo tipo, basata su Costum Attribute e convenzioni sui nomi dei file (un po' come fanno i Dynamic Data). Nei prossimi giorni scriverò un post per spiegare come ottenere tale risultato… Ma intanto volevo mettervi un po' di curiosità…

Posted by Marco Minerva | with no comments
Filed under:

In tutti i post e i tutorial che ho letto a proposito della creazione di pagine personalizzate per i Dynamic Data, viene semplicemente detto che basta creare in DynamicData\CustomPages una cartella con il nome della tabella interessata, quindi copiare al suo interno i file che si trovano nella directory DynamicData\PageTemplates. Questi passaggi sono corretti, ma incompleti: se, infatti, ci si limita ad essi, provando ad eseguire il sito si otterrà una lunga sfilza di errori, perché nell'applicazione sono presenti oggetti con lo stesso nome.

Il problema è dovuto al fatto che le pagine copiate hanno lo stesso nome di quelle esistenti, cosa ovviamente non consentita. Per risolvere l'inconveniente, basta modificare il namespace delle pagine personalizzate. Ad esempio, supponiamo di aver creato una cartella di nome DynamicData\CustomPages\Users e di aver inserito al suo interno il file PageTemplates\List.aspx. Nella prima riga del markup di questa pagina troveremo qualcosa del tipo:

CodeBehind="List.aspx.cs" Inherits="WebApplication1.List" %>

Il parametro deve essere modificato ad esempio in:

CodeBehind="List.aspx.cs" Inherits="WebApplication1.Users.List" %>

Analogamente, nel file List.aspx.cs, la riga

namespace WebApplication1

deve diventare

namespace WebApplication1.Users

Solo a questo punto è effettivamente possibile eseguire l'applicazione Web senza errori.

Posted by Marco Minerva | with no comments
Filed under:

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.

Posted by Marco Minerva | with no comments

Ho notato un comportamento strano con il controllo TreeView delle Windows Forms di .NET 3.5 SP1. Se, in fase di progettazione, imposto il carattere normale per i nodi, e a tempo di esecuzione aggiungo nuovi TreeNode con il font grassetto, le relative etichette appaiono "tagliate", come se il testo uscisse dal rettangolo che dovrebbe contenerlo. Ho provato a fare qualche ricerca su Internet, ma a quanto pare l'unico modo per risolvere il problema (tralasciando le tecniche di subclassing del controllo) consiste nell'impostare il carattere bold per tutto il TreeView, quindi ridefinire il font dei nodi che devono apparire con testo normale… In pratica, ragionare al contrario…

Technorati Tag: ,,,
Posted by Marco Minerva | with no comments
Filed under: ,

Oggi avevo la necessità di creare una sezione personalizzata nel file app.config di un'applicazione Windows Forms. Si tratta della classica attività che, sulla carta, conoscevo bene, ma che non avevo mai realizzato in pratica. Per raggiungere il mio obiettivo, mi è stato molto utile questo post, che fornisce un esempio semplice e quindi facilmente comprensibile.

Technorati Tag: ,,
Posted by Marco Minerva | with no comments
Filed under:

E' stato da poco rilasciato l' aggiornamento GDR R2 per Studio Team System 2008 Database Edition, che, tra le altre cose, aggiunge il supporto a SQL Server 2008. Maggiori informazioni e il link per il download sono disponibili qui.

Technorati Tag: ,,

Da ieri sera, sulla Home Page di Google, compare questo messaggio: "Novità! Condividi il tuo sapere. Prova Knol.". Di cosa si tratta? Basta fare clic sul link per scoprire che

Knol è un modo nuovo per condividere le conoscenze sul Web. Puoi scrivere un nuovo articolo (ossia un knol), suggerire modifiche ad articoli già esistenti o semplicemente leggere i contenuti scritti da altri e condividerli.

Un nuovo modo per far sentire la propria voce sul Web. Ci sto  dando un'occhiata in questo momento, ma per adesso mi sembra niente di più che una versione riveduta e corretta di Wikipedia

Technorati Tags:
Posted by Marco Minerva | with no comments
Filed under:

Questa mattina stavo cercando, in VB .NET, di convertire un tipo generico in un array di byte, cosa che in C# si fa semplicemente con la parola chiave as. Ho provato dapprima con DirectCast, quindi con CType, ma in entrambi i casi ottenevo un errore in compilazione. Alla fine ho scoperto che l'istruzione da utilizzare si chiama TryCast… Ci saranno sicuramente dei motivi validi per cui VB .NET ha tutti questi operatori diversi, fatto sta che la cosa mi ha fatto perdere del tempo…

Technorati Tag: ,,,
Posted by Marco Minerva | with no comments
Filed under: ,

Il controllo FileUpload non è pienamente compatibile con l'UpdatePanel di AJAX: per farlo funzionare, si deve specificare un trigger nell'UpdatePanel in modo da effettuare un PostBack completo della pagina quando si preme il pulsante per effettuare l'upload, altrimenti la proprietà FileUpload.HasFile avrà sempre valore false:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="btnUpload" runat="server"
            Text="Upload..." /></ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnUpload" />
    </Triggers>
</asp:UpdatePanel>

Questo comportamento è dovuto a motivi di sicurezza e alle restrizioni imposte da tutti i browser, che non permettono al codice Javascript di accedere al file system dell'utente.

Technorati Tags: , , ,
Posted by Marco Minerva | with no comments
Filed under:

Utilizzando le impostazioni predefinite, Internet Information Services 6.0, in esecuzione su Windows Server 2003, non è in grado di gestire lo streaming di file FLV: qualsiasi richiesta relativa a file in questo formato, produce inesorabilmente un errore di tipo 404. Il problema è dovuto al fatto che IIS non include il MIME type per questo tipo di file. La soluzione è semplice, e consiste nell'aggiungerlo alle impostazioni del sito, come indicato in questo post. In particolare, per abilitare il formato FLV si deve specificare un MIME type con nome .FLV e tipo flv-application/octet-stream.

Technorati Tag:
Posted by Marco Minerva | with no comments
Filed under:

A questo indirizzo è disponibile il link al Training Kit di SQL Server 2008, una grande quantità di materiale introduttivo su SQL Server. Tutte le risorse sono gratuite, previa registrazione.

Technorati Tag:
Posted by Marco Minerva | with no comments
Filed under:

Da qualche giorno sono disponibili gli esami di aggiornamento per passare dalla certificazione MCPD Enterprise Application Developer alla nuova MCPD Enterprise Application Developer 3.5. Il percorso comprende due esami distinti:

  • Exam 70-568: Upgrade: Transition Your MCPD Enterprise Application Developer Skills to MCPD Enterprise Application Developer 3.5, Part 1 (English)
  • Exam 70-569: Upgrade: Transition Your MCPD Enterprise Application Developer Skills to MCPD Enterprise Application Developer 3.5, Part 2 (English)

Ultimamente sono un po' indietro con le certificazioni su SQL Server, ma sono quasi in dirittura d'arrivo per l'ultimo esame… Se lo supererò, il passo successivo saranno sicuramente gli aggiornamenti delle certificazioni su .NET 3.5.

Technorati Tag:
Posted by Marco Minerva | with no comments

Qualche giorno fa ho parlato del supporto agli add-in fornito da .NET 3.5. In tale occasione, avevo accennato ad un tool, chiamato Pipeline Builder, che permette di semplificare le definizione di questa architettura, poiché è in grado di creare automaticamente tutte le class library di supporto. Si tratta di un add-in per Visual Studio 2008. Dopo l'installazione, è necessario registrarlo nel sistema seguendo le istruzioni riportate in questa pagina. Uno degli aspetti più interessanti del Pipeline Builder è che esso permette di definire anche eventi sull'interfaccia dell'add-in, cosa che, come sa chi ha provato il namespace System.AddIn, non è supportata direttamente.

Technorati Tag: ,,,,
Posted by Marco Minerva | with no comments
Filed under: ,

Flowplayer è un player Web in grado di riprodurre filmati in formato FLV ed MP4, mostrando a video un oggetto simile a quello utilizzato da YouTube. Dispone di un'interfaccia di programmazione basata su Javascript, che permette di personalizzarlo fin nei minimi dettagli. Lo sto utilizzando con soddisfazione da qualche giorno in un'applicazione ASP .NET. Poche ore fa ne è stata rilasciata la versione 3.1.0, che introduce diverse migliorie e una lunga serie di novità, come riportato in questo post.

Technorati Tag: ,,
Posted by Marco Minerva | with no comments
Filed under:

This maintenance release fixes various issues but mainly bugs in the new KryptonDateTimePicker and KryptonMonthCalender controls. Also includes an important fix with the KryptonTextBox that was displaying the password text when in disabled mode.

Maggiori informazioni e il link per il download sul sito di Component Factory.

Posted by Marco Minerva | with no comments
Filed under: ,
More Posts Next page »