2009-12-15 5 views
0

j'ai une collection de livres commeASP.NET LINQ avec Databinding

static public Book[] Books = 
    { 
     new Book { 
     Title="Funny Stories", 
     Publisher=Publishers[0], 
     Authors=new[]{Authors[0], Authors[1]}, 
     PageCount=101, 
     Price=25.55M, 
     PublicationDate=new DateTime(2004, 11, 10), 
     Isbn="0-000-77777-2", 
     Subject=Subjects[0] 
     }, 
     new Book { 
     Title="LINQ rules", 
     Publisher=Publishers[1], 
     Authors=new[]{Authors[2]}, 
     PageCount=300, 
     Price=12M, 
     PublicationDate=new DateTime(2007, 9, 2), 
     Isbn="0-111-77777-2", 
     Subject=Subjects[0] 
     }, 
     new Book { 
     Title="C# on Rails", 
     Publisher=Publishers[1], 
     Authors=new[]{Authors[2]}, 
     PageCount=256, 
     Price=35.5M, 
     PublicationDate=new DateTime(2007, 4, 1), 
     Isbn="0-222-77777-2", 
     Subject=Subjects[0] 
     }, 
     new Book { 
     Title="All your base are belong to us", 
     Publisher=Publishers[1], 
     Authors=new[]{Authors[3]}, 
     PageCount=1205, 
     Price=35.5M, 
     PublicationDate=new DateTime(2006, 5, 5), 
     Isbn="0-333-77777-2", 
     Subject=Subjects[2] 
     }, 
     new Book { 
     Title="Bonjour mon Amour", 
     Publisher=Publishers[0], 
     Authors=new[]{Authors[1], Authors[0]}, 
     PageCount=50, 
     Price=29M, 
     PublicationDate=new DateTime(1973, 2, 18), 
     Isbn="2-444-77777-2", 
     Subject=Subjects[1] 
     } 
    }; 

J'ai deux à lier GridView imbriqué (First GridView Prend Titre du livre, la imbriquée GridView affiche la liste des auteurs).

La requête LINQ pour la sélection des titres et des auteurs est

List<Author> alist=new List<Author>(); 

var Authors = 
SampleData.Books.Select(c=>new {Title=c.Title,list=c.Authors.ToList() }); 

GridView1.DataSource = Authors; 
GridView1.DataBind();    

et le code HTML est

<asp:GridView ID="GridView1" runat="server" 
     DataKeyNames="Title,list"> 
     <Columns> 
      <asp:TemplateField HeaderText="Authors"> 
       <ItemTemplate> 
        <asp:GridView ID="GridView2" runat="server" 
        DataSource='<%# Eval("list") %>'> 
        </asp:GridView> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

Comment lier GridView1 et GridView2 lorsque AutoGeneratedColumns est enabaled à la fois?

+0

Pouvez-vous essayer d'ajouter 'DataKeyNames =" FirstName, LastName "' (ou quels que soient vos membres Autor appelés) à GridView2? – Heinzi

+0

oui. Maintenant le code fonctionne.Merci Heinzi. – Dilson

Répondre

0

[Ceci est un résumé de la (en partie supprimé) discussion de commentaires, pour vous assurer que la question a une réponse]

Vous devez ajouter DataKeyNames="FirstName,LastName" (ou quelles que soient les propriétés de votre Author classe sont appelés) à GridView2, afin que GridView sache quelles propriétés de votre classe Author personnalisée il doit lier.