2013-09-24 4 views
3

У меня есть gridview, который использует JOIN. Два столбца, которые из разных таблиц, имеют одно и то же имя:Показать два столбца с тем же именем в Gridview

<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]" /> 

Это вызывает следующее сообщение об ошибке:

Пользователь ни DataColumn, ни DataRelation для таблицы DefaultView.

Как представить два столбца из разных таблиц с тем же именем.

ответ

5

Проблема заключается в том, что столбец на самом деле 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] 
Смежные вопросы