【问题标题】:Binding LinqDataSource to two separate Table将 LinqDataSource 绑定到两个单独的表
【发布时间】:2011-03-24 21:57:24
【问题描述】:

我有两张桌子:

实体
ID(PK,整数)
姓名

用户
Entity_ID(对 Entity.ID 的 FK)
F名称
姓名

现在我想使用 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")'

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

【问题讨论】:

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


    【解决方案1】:

    如果 LinqDataSource 中存在这样的连接,您绝对可以这样做。

    不过你的语法看起来很奇怪:

    试试这个(如果可行,现在不要尝试):

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

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

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

    【讨论】:

    • 当我使用第二个代码运行时,它告诉我 Users.FirstName 不存在。这是真的,因为我的 LDS 只附加到一张桌子上。
    • @klm9971:L2SQL 映射文件需要包含两个类,并且映射中必须存在一对一关系
    【解决方案2】:

    您绑定到 Firstname,但您的用户有 FName 或者是拼写错误?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2011-04-09
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多