2010-08-17 5 views
0

J'essaie d'afficher une colonne personnalisée dans ma grille qui affiche un type de contenu basé sur quelques champs booléens dans ma base de données. Tout fonctionne très bien, mais cela cause beaucoup de frais généraux comme je le fais maintenant .. comme ceci:SubSonic 2.2 et ASP.NET gridview

<ItemTemplate> 
    <asp:Label ID="lblType" runat="server" Text='<%# GetType((int)DataBinder.Eval(Container.DataItem))%>' /> 
</ItemTemplate> 

Cela appelle une GetType fonction qui interroge la base de données sur la base ArticleID. Bien sûr, cela se produit pour chaque élément de la grille. Maintenant, je voudrais savoir s'il est possible d'envoyer l'élément de collection (subsonique) actuel à cette fonction à la place? Parce que l'objet est déjà disponible mais je ne sais pas comment le mettre dans mon objet.

Mon article actuel est DAL.Article qui contient tout ce dont j'ai besoin.

J'espère que je me suis éclairci un peu! Merci pour votre temps.

Cordialement, Mark

Répondre

0

Subsonic générés classes sont partielles et donc extensible. Supposons que vous ayez un objet DAL appelé Person. Vous pouvez créer un nouveau fichier Person.cs (dans un dossier différent bien sûr).

namespace Your.Dal.Namespace { 
    public partial class Person 
    { 
     public string DisplayName 
     { 
      get 
      { 
       return String.Format("{0}, {1}", this.LastName, this.FirstName); 
      } 
     } 
    } 
} 

Vous pouvez maintenant accéder à la propriété DisplayName de votre classe:

PersonCollection col = new PersonCollection().Load(); 

foreach(Person p in col) 
    Console.WriteLine(p.DisplayName); 

J'utilise cette technique pour lier Collections subsoniques à un Windows.Forms DataGridView beaucoup. Mais cela devrait aussi fonctionner pour asp.net.

+0

Parfait ami de la solution n'a même pas pensé à cela. Merci beaucoup! – Mark