2010-07-09 6 views
2

J'ai gridview lié à un objet métier bête. L'objet métier comportait 30 champs & Je n'avais besoin que d'afficher 8 dans ma grille pour que les autres champs de l'objet métier soient gaspillés.Comment implémenter un DTO pour ma gridview?

On m'a conseillé de concevoir un DTO à cet effet. J'ai conçu un DTO mais il n'a pas l'air différent d'un objet commercial muet lui-même?

Actuellement, j'ai le DTO pour la grille, sa classe de collecte List <DTO> et une classe DAL. Je remplis le DTO dans DAL et le renvoie à la couche de présentation.

Est-ce la bonne façon? Dois-je créer une classe de base pour le DTO?

Mon DTO atmosphère ressemble à ce

public class ftMasterSummaryDTO 
{ 
    private int ftId; 
    private DateTime entryDate=DateTime.MinValue; 
    private int ftYear; 
    private string ftCateg=string.Empty; 
    private string ftType=string.Empty; 

    public int FtId 
    { 
     get { return ftId; } 
     set { ftId = value; } 
    } 

    public DateTime EntryDate 
    { 
     get { return entryDate; } 
     set { entryDate = value; } 
    } 

    public int FtYear 
    { 
     get { return ftYear; } 
     set { ftYear = value; } 
    } 

    public string FtCateg 
    { 
     get { return ftCateg; } 
     set { ftCateg = value; } 
    } 

    public string FtType 
    { 
     get { return ftCateg; } 
     set { ftCateg = value; } 
    } 

} 

Répondre

3

Utilisez ObjectDataSource pour lier le GridView à vos objets-business personnalisés. Créez une classe DTOManager qui doit renvoyer l'IList pour vos DTO. Ensuite, en mode conception de GridView, vous pouvez supprimer les colonnes que vous ne souhaitez pas afficher.

Votre classe DTOManager peut ressembler à ceci.

/// <summary> 
/// Business Manager class for DTO object 
/// </summary> 
[DataObjectAttribute()] 
public class DTOManager 
{ 
    /// <summary> 
    /// Function to get all DTOs records 
    /// </summary> 
    /// <returns>Returns List of DTOs</returns> 
    [DataObjectMethod(DataObjectMethodType.Select, true)] 
    public static IList<DTO> GetDTOs() 
    { 
     return DTO_DB.GetAll(); 
    } 

} 

Note: Vous pouvez lier votre GridView à ObjectDataSource dans le mode de conception. Votre assistant de configuration ObjectDataSource détectera automatiquement [DataObjectAttribute] DTOManager et sa méthode SELECT GetDTOs.

+0

Merci pour la réponse mate. Je sais comment mettre en œuvre le gridview, 1) seule chose qui me dérange est mon approche. Est-ce la bonne façon? 2) Quelle est la différence entre un objet DTO et un objet métier bête? Ils ne sont pas tous pareils? 3) Dois-je définir une classe de base pour le DTO? –

+0

Les DTO n'ont pas besoin d'une classe de base. Les objets métier sont mappés avec des tables et des colonnes de base de données dans lesquelles les objets DTO ne le sont pas. –

+0

Merci pour la réponse mate. J'ai fait exactement ce que tu as dit. Je vais faire un gestionnaire distinct pour mes DTO, merci :) –

Questions connexes