如何使用LinqDataSource在GridView中访问ForeignKey值?

时间:2011-02-08 19:53:02

标签: c# asp.net database linq

问题如下:

我在数据库中有三个表:

包含ID_Article,Title等字段的文章以及FK ID_Author

CATEGORY,字段ID_Category,名称

带有字段ID_Article,ID_Category

的CATEGORYTOARTICLE

现在我有一个页面显示给定类别的所有文章。 里面有一个GridView。

        <asp:GridView ID="GridViewCategories" runat="server" 
            AutoGenerateColumns="False" DataSourceID="LinqSourceGridCategories" >
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>Title</HeaderTemplate>
                    <ItemTemplate>
                        ???
                    </ItemTemplate>
                </asp:TemplateField>                        
            </Columns>
        </asp:GridView>

加上LinqDataSource

        <asp:LinqDataSource ID="LinqSourceGridCategories" runat="server" 
            ContextTypeName="konserwatyzm.db.DataClassesDataContext" EntityTypeName="" 
            TableName="CategoryToArticles" Where="ID_Category == @ID_Category">
            <WhereParameters>
                <asp:QueryStringParameter Name="ID_Category" QueryStringField="id" 
                    Type="Int32" />
            </WhereParameters>
        </asp:LinqDataSource>

查看类别的ID通过QueryString传递。

如何访问Article表的字段以便我可以在GridView中为它们创建列?我尝试使用Eval(“Article.Title”)但它一直说“DataBinding:'konserwatyzm .db.CategoryToArticle'不包含名称为'Article'的属性。“

谢谢!

1 个答案:

答案 0 :(得分:1)

确保在dbml或map中正确定义了键。然后尝试使用linqdatasource配置向导构建查询,方法是选择所需的所有表。您似乎只在需要时选择了CategoryToArticles表+其他两个。您将能够以这种方式引用其他表中的列。