C# GridView select语句不显示任何内容

C# GridView select语句不显示任何内容 ,c#,asp.net,gridview,C#,Asp.net,Gridview,我想创建一个GridView,显示MatchStatistics中的所有记录。为此,我需要从Team表中收集Team\u name。但是,即使MatchStatistics包含数据,select语句也不起作用。怎么了 我想要的GridView应该是MatchStatistics的所有内容,主客场球队ID替换为他们的Team_名称。与下面类似,但使用下拉列表代替主客场球队ID 我认为您想要使用或: <asp:GridView ID="GridView2" runat="server" Aut

我想创建一个GridView,显示MatchStatistics中的所有记录。为此,我需要从
Team
表中收集
Team\u name
。但是,即使
MatchStatistics
包含数据,select语句也不起作用。怎么了

我想要的GridView应该是
MatchStatistics
的所有内容,主客场球队ID替换为他们的
Team_名称
。与下面类似,但使用下拉列表代替主客场球队ID


我认为您想要使用或:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="Match_ID" DataSourceID="SqlDataSource4">
            <Columns>
                <asp:BoundField DataField="Team_name" HeaderText="Team_name" SortExpression="Team_name" />
                <asp:BoundField DataField="Match_ID" HeaderText="Match_ID" InsertVisible="False" ReadOnly="True" SortExpression="Match_ID" />
                <asp:BoundField DataField="Home_team_ID" HeaderText="Home_team_ID" SortExpression="Home_team_ID" />
                <asp:BoundField DataField="Away_team_ID" HeaderText="Away_team_ID" SortExpression="Away_team_ID" />
                <asp:BoundField DataField="Home_team_score" HeaderText="Home_team_score" SortExpression="Home_team_score" />
                <asp:BoundField DataField="Away_team_score" HeaderText="Away_team_score" SortExpression="Away_team_score" />
                <asp:BoundField DataField="Game_date" HeaderText="Game_date" SortExpression="Game_date" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:SportsData2ConnectionString %>" SelectCommand="SELECT Team.Team_name, MatchStatistics.Match_ID, MatchStatistics.Home_team_ID, MatchStatistics.Away_team_ID, MatchStatistics.Home_team_score, MatchStatistics.Away_team_score, MatchStatistics.Game_date FROM MatchStatistics INNER JOIN Team ON MatchStatistics.Home_team_ID = Team.Team_ID AND MatchStatistics.Away_team_ID = Team.Team_ID ORDER BY MatchStatistics.Game_date DESC"></asp:SqlDataSource>

事实上,您希望球队能够与主客场比赛,我想您希望找到任何主客场球队。

我想您希望使用或:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="Match_ID" DataSourceID="SqlDataSource4">
            <Columns>
                <asp:BoundField DataField="Team_name" HeaderText="Team_name" SortExpression="Team_name" />
                <asp:BoundField DataField="Match_ID" HeaderText="Match_ID" InsertVisible="False" ReadOnly="True" SortExpression="Match_ID" />
                <asp:BoundField DataField="Home_team_ID" HeaderText="Home_team_ID" SortExpression="Home_team_ID" />
                <asp:BoundField DataField="Away_team_ID" HeaderText="Away_team_ID" SortExpression="Away_team_ID" />
                <asp:BoundField DataField="Home_team_score" HeaderText="Home_team_score" SortExpression="Home_team_score" />
                <asp:BoundField DataField="Away_team_score" HeaderText="Away_team_score" SortExpression="Away_team_score" />
                <asp:BoundField DataField="Game_date" HeaderText="Game_date" SortExpression="Game_date" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:SportsData2ConnectionString %>" SelectCommand="SELECT Team.Team_name, MatchStatistics.Match_ID, MatchStatistics.Home_team_ID, MatchStatistics.Away_team_ID, MatchStatistics.Home_team_score, MatchStatistics.Away_team_score, MatchStatistics.Game_date FROM MatchStatistics INNER JOIN Team ON MatchStatistics.Home_team_ID = Team.Team_ID AND MatchStatistics.Away_team_ID = Team.Team_ID ORDER BY MatchStatistics.Game_date DESC"></asp:SqlDataSource>
事实上,您希望球队能够匹配主客场,我认为您希望找到任何主客场球队。

尝试以下查询:

FROM MatchStatistics 
INNER JOIN Team 
ON MatchStatistics.Home_team_ID = Team.Team_ID 
**OR** MatchStatistics.Away_team_ID = Team.Team_ID 
这将为您提供团队名称,而不是团队ID

请记住删除GridView中的第一列,并更新DataFields和SortExpressions以匹配查询中的新列名:

  • 匹配\u ID
  • Home\u Team\u Name
  • 客场球队名称
  • 主队得分
  • 客场球队得分
  • 游戏日期
你也可以检查我做的测试。只要知道我在小提琴中使用了一些稍微不同的列名,如果你觉得需要从中复制一些东西的话。

试试这个查询:

FROM MatchStatistics 
INNER JOIN Team 
ON MatchStatistics.Home_team_ID = Team.Team_ID 
**OR** MatchStatistics.Away_team_ID = Team.Team_ID 
这将为您提供团队名称,而不是团队ID

请记住删除GridView中的第一列,并更新DataFields和SortExpressions以匹配查询中的新列名:

  • 匹配\u ID
  • Home\u Team\u Name
  • 客场球队名称
  • 主队得分
  • 客场球队得分
  • 游戏日期


你也可以检查我做的测试。只要知道我在小提琴中使用了一些稍微不同的列名,如果你觉得有必要从中复制一些东西的话。

你的内部连接似乎有点可疑。如果删除
和MatchStatistics.Away\u team\u ID=team.team\u ID
部分,是否有效?在将查询放入代码之前,请尝试在SQL management studio中运行查询以进行测试。另外,select语句不起作用意味着什么?您是否遇到错误?如果我删除
和MatchStatistics.Away\u team\u ID=team.team\u ID
,它会起作用。那么我只需要这些值中的一个还是两者都需要?我发布的select语句不返回任何记录。我不想在表中显示ID,而是显示它们的名称。在我看来,问题在于名为
Team\u name
的行,它将多次出现在联接表中,因为您正在双重联接同一个表,所以GridView不知道要显示哪一行。也许这会有助于我认为@BrianMains所说的更接近我想要的。然而,它给了我一个主客场每个球队名字的比赛ID。有没有办法返回单个匹配ID?例如,“1,2,3”不是“1,1,2,2,3…”等我可以问一下,您希望它在GridView字段中显示哪个团队
团队名称
?您的内部连接似乎有点可疑。如果删除
和MatchStatistics.Away\u team\u ID=team.team\u ID
部分,是否有效?在将查询放入代码之前,请尝试在SQL management studio中运行查询以进行测试。另外,select语句不起作用意味着什么?您是否遇到错误?如果我删除
和MatchStatistics.Away\u team\u ID=team.team\u ID
,它会起作用。那么我只需要这些值中的一个还是两者都需要?我发布的select语句不返回任何记录。我不想在表中显示ID,而是显示它们的名称。在我看来,问题在于名为
Team\u name
的行,它将多次出现在联接表中,因为您正在双重联接同一个表,所以GridView不知道要显示哪一行。也许这会有助于我认为@BrianMains所说的更接近我想要的。然而,它给了我一个主客场每个球队名字的比赛ID。有没有办法返回单个匹配ID?例如,“1,2,3”不是“1,1,2,2,3…”等等,我可以问您希望它在GridView字段
team\u name
中显示哪个团队?现在我为每个
Match\u ID
得到两行,其中
team\u ID
team\u name
各不相同。我只想为每场比赛列出一行是的,但是你想与哪支球队比赛,主队,客队,还是用户选择的球队?我在想@chmodder的解决方案你真正想要的是什么。我试图显示用户之前进行的比赛的列表,以便它显示比赛ID,主队和客队,主客场得分及其日期。在
team\u name
列中分别有主队和客队两列不是我想要的@chmodder当时正在做的事情,因为这就是你想要的。现在我为每个
Match\u ID
获得两行
team\u ID
team\u name
。我只想为每场比赛列出一行是的,但是你想与哪支球队比赛,主队,客队,还是用户选择的球队?我在想@chmodder的解决方案你真正想要的是什么。我试图显示用户之前进行的比赛的列表,以便它显示比赛ID,主队和客队,主客场得分及其日期。在
team_name
栏中分别有主队和客队两栏不是我想要的@chmodder当时正在做的事情,因为这正是你想要的。这更接近我想要的,但不是完全。我已经在OP上发布了我的目标。可能只是我在设置下拉列表以选择球队列表时遇到了困难,并根据列将其设置为主队ID或客队ID。让我看看我是否