ASP.NET LINQ с привязкой данных - PullRequest
       13

ASP.NET LINQ с привязкой данных

0 голосов
/ 15 декабря 2009

У меня есть коллекция книг как

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 включена в обоих?

1 Ответ

0 голосов
/ 15 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...