TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Dave
NA
161
0
GridView with a Many to Many Datasource
Feb 5 2009 2:59 AM
I am having a problem achieving something. I have a Gridview. In the Gridview will be books. Now, books and authors have a many to many relationship, so you cannot just use an SQLDataSource with a JOIN query, as you will end up with multiple rows for the one book (one for each author).
I figured using the ObjectDataSource would be my best bet.
I created an ObjectDataSource. The SelectMethod for that ObjectDataSource is a method that returns an array of books i.e. Book[] . Within each Book object in that array is a generic list of authors i.e. List<Author>. The challenge is, somehow accessing the properties of those Authors to output in the relevant cells of the GridView. That is where I am stuck. Here is a bit of markup to give you an idea (the 2nd column template is the one to scrutinise):
<asp:GridView ID="titles" runat="server" AllowPaging="true" AllowSorting="true"
AutoGenerateColumns="False" DataSourceID="PubsDS" EnableViewState="False"
OnRowCreated="titles_RowCreated" OnSorting="titles_Sorting"
OnPreRender="titles_PreRender" DataKeyNames="ISBNNr">
<Columns>
<asp:TemplateField HeaderText="Title" SortExpression="Title">
<ItemTemplate>
<asp:HyperLink id="titleItemLink" runat="server"
NavigateUrl='<%# Eval("ISBNNr", "item.aspx?title_id={0}") %>'
Text='<%# Eval("Title") %>'>
</asp:HyperLink>
</ItemTemplate>
<ItemStyle CssClass="w200" />
<HeaderStyle CssClass="w200" />
<FooterStyle CssClass="w200" />
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink runat="server" ID="tester"
NavigateUrl='<%# Eval("Authors") %>'
Text='<%# Eval(Authors) %>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ISBNNr" HeaderText="ISBN" SortExpression="ISBNNr" />
<asp:HyperLinkField DataNavigateUrlFields="ISBNNr" DataNavigateUrlFormatString="item.aspx?title_id={0}"
DataTextField="ISBNNr" DataTextFormatString="more information" HeaderText="Item Information" />
</Columns>
</asp:GridView>
Reply
Answers (
4
)
saving picture using web cam
Login Details Shopping Cart->World Pay->Shopping Cart