2016-05-05 76 views
1
<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> 

enter image description hereGridView的select語句不顯示任何

我想創建一個GridView顯示內MatchStatistics所有記錄。爲此,我需要從Team表中收集Team_name。但是,即使MatchStatistics有數據,select語句也不起作用。它出什麼問題了?

我的預期GridView應該是MatchStatistics的所有內容,主客場球隊ID由Team_names替代。與以下類似,但是用dropdownlists代替主隊和客隊ID。

enter image description here

+0

你的INNER JOIN似乎有點可疑。如果您刪除了AND AND MatchStatistics.Away_team_ID = Team.Team_ID'部分,它會起作用嗎?嘗試在SQL管理工作室中運行您的查詢,然後將其放入代碼中進行測試。另外,_ select語句不工作_是什麼意思?你有錯誤嗎? – zgood

+0

它工作,如果我刪除'AND MatchStatistics.Away_team_ID = Team.Team_ID'所以我只需要這些值或兩者之一?我發佈的select語句不返回任何記錄。我想不在表格中顯示ID,而不是他們的名字。 –

+0

在我看來,問題在於名爲'Team_name'的行,它將在連接表中多次顯示,因爲您正在連接同一個表,因此GridView無法知道要顯示哪個表。也許這將有助於[「兩次加入同一個表的最佳方式」](http://stackoverflow.com/questions/4267929/whats-the-best-way-to-join-on-the-same-表兩次) – chmodder

回答

0

我想你想使用OR:

FROM MatchStatistics 
INNER JOIN Team 
ON MatchStatistics.Home_team_ID = Team.Team_ID 
**OR** MatchStatistics.Away_team_ID = Team.Team_ID 

正因爲如此,你期待的球隊相匹配的主場和客場,我想你想找到任何家庭或離開團隊。

+0

現在我爲每個'Match_ID'獲得2行,其中'Team_ID'和'Team_name'每個都是不同的。我只想爲每場比賽列出1排 –

+0

是的,但是您嘗試匹配哪支球隊,主隊或客隊,還是用戶選擇的球隊? –

+0

我正在考慮@ chmodder的解決方案,您真正在尋找什麼。 –

0

嘗試此查詢:

SELECT 
    t1.Team_name AS Home_Team_Name, 
    t2.Team_name AS Away_Team_Name, 
    m.Match_ID, 
    m.Home_team_score, 
    m.Away_team_score, 
    m.Game_date 
FROM MatchStatistics m 
INNER JOIN Team t1 ON t1.Team_ID = m.Home_team_ID 
INNER JOIN Team t2 ON t2.Team_ID = m.Away_team_ID 
ORDER BY m.Game_date DESC 

這應該給你teamnames而不是teamId的。

記得刪除GridView中第一列和更新的數據域和SortExpressions從查詢匹配新的列名:

  • Match_ID
  • Home_Team_Name
  • Away_Team_Name
  • Home_team_score
  • Away_team_score
  • Game_date

您還可以檢查我製作的sqlfiddle (MySQL)來測試它。只要知道我在小提琴中使用了一些稍微不同的列名稱,如果你覺得需要從中拷貝一些東西。

+0

這更接近我想要但不完全。我已經在OP中張貼了我正在做的事情。這可能是因爲我很難設置我的下拉列表來選擇球隊列表,並根據列將其設置爲主隊ID或客隊ID。 –

+0

讓我看看我是否正確。你不想讓Id顯示,而是想顯示隊名?如果是這種情況,嘗試添加'SELECT t1.Team_name AS Home_teamname,t2.Team_name AS Away_teamname .....'而不是'SELECT t1.team_name AS Home_team_name,m.Home_team_id,m.Away_team_ID'並查看會發生什麼。 – chmodder

+0

太棒了,它的作品!但是,編輯時我想讓兩個主客場球隊列表DropDownLists顯示所有球隊名稱的列表。在他們內部的價值應該是團隊ID,如果他們需要改變,他們可以在主場和客場之內取代球隊ID。這個select語句甚至有可能嗎?我回來了''DropDownList6'有一個無效的SelectedValue,因爲它不存在於項目列表中。 參數名稱:數值綁定到'Team_ID'時的值' –