2009-12-15 4 views
0

У меня есть коллекция книг, какASP.NET LINQ с 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] 
     } 
    }; 

У меня есть два, чтобы связать вложенную GridView (Первый GridView принимает Название книги, вложенная GridView отображает список авторов).

Linq запросов для выбора Название и авторов

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();    

и HTML код

<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> 

Как связать GridView1 и GridView2 когда AutoGeneratedColumns является enabaled на обоих?

+0

Можете ли вы попробовать добавить DataGeyNames = «FirstName, LastName» (или что-то еще, что вы вызываете члены Autor) в GridView2? – Heinzi

+0

Да. Теперь код работает. Спасибо, Хайнци. – Dilson

ответ

0

[Это резюме (частично удалена) комментарий обсуждения, чтобы убедиться, что этот вопрос имеет ответ]

Вам нужно добавить DataKeyNames="FirstName,LastName" (или что свойства вашего Author класса называются) в GridView2, так что GridView знает, какие свойства вашего настраиваемого класса Author он должен привязать.

Смежные вопросы