Привязка LinqDataSource к двум отдельным таблицам - PullRequest
2 голосов
/ 25 марта 2011

У меня есть две таблицы:

Entity
ID (PK, int)
Имя

Пользователи
Entity_ID (FK для Entity.ID)
FName
LName

Теперь я хочу показать все столбцы из обеих таблиц в моем GridView, используя QueryString. Я получил часть QueryString через настройку LDS. Я не вижу, как можно связать обе таблицы в одном 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 ]

1 голос
/ 25 марта 2011

Вы, безусловно, можете сделать это, если такое соединение существует в LinqDataSource.

Хотя ваш синтаксис выглядит странно:

Попробуйте это (не сейчас, если это работает):

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

Или тот (этот работает):

<asp:TemplateField>
 <ItemTemplate>
  <asp:Literal ID="litFoo" runat="server" Text='<%# Bind("Users.FirstName") %>' />
 </ItemTemplate>
</asp:TemplateField>
0 голосов
/ 25 марта 2011

Вы привязываетесь к Firstname, но у ваших пользователей есть FName или это опечатка?

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