将LinqDataSource绑定到两个单独的表

时间:2011-03-24 21:57:25

标签: c# asp.net linq linq-to-sql

我有两张桌子:

  

实体
  ID(PK,int)
  姓名

     

用户
  Entity_ID(FK到Entity.ID)
  FName参数
  LName的

现在我想使用QueryString将两个表中的所有列显示到我的GridView。我通过配置LDS得到了QueryString部分。我看不出你如何在一个LDS中链接两个表?

以下是我的代码的标记:

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
             AllowSorting="True" AutoGenerateColumns="False" 
             DataSourceID="LinqDataSource1" Height="209px" Width="648px">
             <Columns>
                 <asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" 
                     SortExpression="Name" />
                 <asp:BoundField DataField="Description" HeaderText="Description" 
                     ReadOnly="True" SortExpression="Description" />
                 <asp:BoundField DataField="Company" HeaderText="Company" ReadOnly="True" 
                     SortExpression="Company" />
                 <asp:BoundField DataField="Phone" HeaderText="Phone" ReadOnly="True" 
                     SortExpression="Phone" />
                 <asp:BoundField DataField="Fax" HeaderText="Fax" ReadOnly="True" 
                     SortExpression="Fax" />
                 <asp:BoundField DataField="Email" HeaderText="Email" ReadOnly="True" 
                     SortExpression="Email" />
                 <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
                     SortExpression="ID" />

                     <asp:BoundField DataField = 'Bind("Users.FirstName")' />
             </Columns>
         </asp:GridView>
         <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
             ContextTypeName="EntityRegistration.DataAccess.OISLinq2SqlVs1DataContext" 
             EnableInsert="True" EnableUpdate="True" EntityTypeName="" OrderBy="ID" 
             Select="new (Name, Description, Company, Phone, Fax, Email, ID)" 
             TableName="Entities" Where="ID == @ID">
             <WhereParameters>
                 <asp:QueryStringParameter Name="ID" QueryStringField="EntityID" Type="Int32" />
             </WhereParameters>
         </asp:LinqDataSource>

如您所见,我也添加了这一栏:

asp:BoundField DataField ='Bind(“Users.FirstName”)'

不知道我在这里做错了什么?有什么意见吗?

2 个答案:

答案 0 :(得分:1)

如果LinqDataSource中存在此类连接,您肯定可以这样做。

你的语法看起来很奇怪:

尝试这个(如果这样的话,现在不要):

 <asp:BoundField DataField = 'Users.FirstName' />

或者那个(这个确实有效):

<asp:TemplateField>
 <ItemTemplate>
  <asp:Literal ID="litFoo" runat="server" Text='<%# Bind("Users.FirstName") %>' />
 </ItemTemplate>
</asp:TemplateField>

答案 1 :(得分:0)

您绑定了Firstname,但您的用户有FName还是错字?