in

DotNetSide

Dot Net South Italy Developers User Group

Tips

February 2007 - Posts

  • DataObjectAttribute e ObjectDataSource

    Autore: Mario Ferrante

    L’attributo DataObject rende più facile la ricerca delle classi che si vogliono legare ad un controllo DataBound durante la configurazione dell’ObjectDataSource.
    Quando si utilizza l’ObjectDataSource, la prima cosa che devo fare è scegliere l’oggetto Business da utilizzare per recuperare o gestire i dati e per legarli ad un controllo DataBound:

    Purtroppo se chiedo al wizard dell’ObjectDataSource di mostrarmi solo i “Data Components” (come in figura), la maggior parte delle volte il risultato che ottengo è un menù a discesa vuoto.
    Dunque non rimane che levare la spunta a “Show only data components” e cercare l’oggetto Business che mi interessa tra tutti quelli a cui è referenziata la mia applicazione, come si vede nella figura successiva.

     

    Poco male nel caso di piccole applicazioni, ma nel caso di applicazioni molto grandi o che comunque referenziano molti assemblies il problema diventa un po’ più serio.
    Ed è qui che viene in aiuto l’attributo DataObjectAttribute o semplicemente DataObject. Questo attributo può essere usato a livello di classe, ma anche a livello dei singoli metodi.

    L’Attributo DataObject a livello di classe
    Supponiamo che nella mia applicazione ho una classe che mi gestisce il CRUD (Create Retrieve Update e Delete) di News a cui aggiungo, a livello di classe, l’attributo DataObject:

     

     

    Imports System.ComponentModel Namespace Mario.DotNetSide <DataObject()> _ Public Class NewsManager 'Implementazione della Classe End Class End Namespace

     

    Il risultato sarà:

    Il costruttore dell’attributo DataObject accetta anche un parametro di tipo System.Boolean, se False dichiaro esplicitamente all’Object Data Source di non considerare quella classe come Data Component.
    L’Attributo DataObject a livello di metodo

    Abbiamo usato questo attributo a livello di Classe, ma lo posso utilizzare anche a livello di metodi per definire quali di essi devono essere utilizzati per selezionare i dati, quali per inserire un record, cancellarlo o modificarlo:

     

    <DataObject()> _ Public Class NewsManager <DataObjectMethod(DataObjectMethodType.Select, True)> _ Public Function GetNews() As NewsCollection End Function <DataObjectMethod(DataObjectMethodType.Insert, True)> _ Public Function AddNews(ByVal item As News) As Integer End Function End Class

    I valori dell’enumerazione DataObjectMethodType sono autoesplicativi:

    • Delete
    • Fill
    • Insert
    • Select
    • Update

    Il secondo parametro booleano passato all’attributo (True in questo caso) indica all Object Data Source se considerare (True) o meno (False) quel metodo per una determinata funzione (ad esempio di Select).
    In .Net gli attributi hanno una fondamentale importanza, essi contribuiscono a fornire tutte quelle informazioni che costituiscono i MetaData di un’assembly. Inoltre possono influenzare il comportamento di un oggetto sia a run-time sia (come in questo caso) a design-time.

Powered by Community Server (Commercial Edition), by Telligent Systems