3

JOIN を使用するグリッドビューがあります。異なるテーブルからの 2 つの列は同じ名前です。

<asp:GridView ID="viewThemeTypeAssociationsGridView" runat="server" AutoGenerateColumns="False"
     BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
     DataKeyNames="PK_User" CellPadding="3" CellSpacing="2" DataSourceID="SqlDataSource6"
     OnRowDataBound="viewThemeTypeAssociationsGridView_OnRowDataBound">
     <Columns>
           <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
           <asp:BoundField DataField="Name" HeaderText="Organization Team" SortExpression="Name" />
     </Columns>
     </asp:GridView>
     <asp:SqlDataSource ID="SqlDataSource6" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
                                            SelectCommand="
                                            SELECT [User].[PK_User]
                                                ,[User].[Name]
                                                ,[OrganizationalTeam].[Name]
                                            FROM [User]
                                            LEFT JOIN [OrganizationalTeam] ON [OrganizationalTeam].[PK_OrganizationalTeam] = [User].[OrganizationalTeamId]
                                            WHERE COALESCE(cast([OrganizationalTeam].[InternalExternal] as varchar(255)), 'null') LIKE @internalExternalParam
                                            GROUP BY [User].[Name]
                                                ,[OrganizationalTeam].[Name]
                                                ,[User].[PK_User]
                                            ">
    <SelectParameters>
          <asp:QueryStringParameter Name="internalExternalParam" DefaultValue="%" Type="String" />
    </SelectParameters>

表示できなくて困っています。私がそれが行われると仮定する方法は次のようなものです:

<asp:BoundField DataField="[OrganizationalTeam].[Name]" HeaderText=" Team Name" SortExpression="[OrganizationalTeam].[Name]" />
<asp:BoundField DataField="[User].[Name]" HeaderText="Team" SortExpression="[User].[Name]" />

これにより、次のエラーが発生します。

ユーザーは、テーブル DefaultView の DataColumn でも DataRelation でもありません。

異なるテーブルの 2 つの列を同じ名前で表示するにはどうすればよいですか。

4

1 に答える 1

6

問題は、列が実際にNameは両方のものであることです。私の提案は、それらにエイリアスを使用して、各テーブルのデータを区別することです。

SELECT [User].[PK_User]
    ,[User].[Name] as UserName
    ,[OrganizationalTeam].[Name] as OrganizationalTeamName
FROM [User]
LEFT JOIN [OrganizationalTeam] ON [OrganizationalTeam].[PK_OrganizationalTeam] = [User].[OrganizationalTeamId]
WHERE COALESCE(cast([OrganizationalTeam].[InternalExternal] as varchar(255)), 'null') LIKE @internalExternalParam
GROUP BY [User].[Name]
    ,[OrganizationalTeam].[Name]
于 2013-09-24T18:50:51.957 に答える