2010-08-12 20 views
0

J'ai deux répéteurs imbriqués dans ma page * .aspx.Type anonyme pour répéteur imbriqué (ASP .NET)

<asp:Repeater runat="server" id="rptMain"> 
    <ItemTemplate> 
     <h1><%#DataBinder.Eval(Container.DataItem, "Name")%></h1> 
     <asp:Repeater runat="server" DataSource='<%# getUser(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "FieldKey"))) %>'> 
      <HeaderTemplate><ol></HeaderTemplate> 
      <ItemTemplate> 
       <li class="<%#DataBinder.Eval(Container.DataItem, "CSSStyle")%>" id="li<%#DataBinder.Eval(Container.DataItem, "FieldKey")%>"> 
       <%#DataBinder.Eval(Container.DataItem, "NameSubject")%> 
       </li> 
      </ItemTemplate> 
      <FooterTemplate></ol></FooterTemplate> 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

getUser est une méthode protégée. Il faut retourne la liste avec les propriétés suivantes:

  1. CssClass
  2. FIELDKEY
  3. NameSubject

Mais la propriété CssClass est définie dans le type anonyme.

protected List<????> getUser(int id) 
{ 
    DataClassesDataContext datacontext = new DataClassesDataContext(); 
    var t1= from t in datacontext.GetAllCustomSubject(id).ToList() 
      select new { t.NameSubject, t.FieldKey, CSSStyle = t.IsDeleted ? "deleted hidden" : "real visible" }; 
    return t; 
} 

Comment puis-je retourner une telle liste? Quel type de type de données puis-je utiliser au lieu de ???? ? En général, puis-je utiliser des répéteurs imbriqués avec des types anonymes?

Répondre

1

Eh bien, le répéteur ne s'en souciera pas, je soupçonne - donc juste le déclarer IEnumerable.

+0

Pourriez-vous le préciser? protected IEnumerable getUser Peut-être, je l'ai mal compris? –

+1

@Amber: Juste 'IEnumerable', le type non générique dans' System.Collections'. –

+0

Cela fonctionne. Je vous remercie. –