[英]XML file not displaying in Datagrid view Visual Basic
我應該 output 顯示每個球員的全名和擊球率。
我可以獲得 XML 文件以在列表框中顯示團隊名稱,但是當涉及到數據網格視圖時,僅顯示列標題。
在嘗試顯示球員姓名和擊球率方面,我哪里出錯了?
Public Class frmBaseball
Dim baseballdata As XElement = XElement.Load("Baseball.xml")
Private Sub frmBaseball_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' get team names from base ball data and filters by player
Dim teamQuery = From player In baseballdata.Descendants("player")
Let teamName = player.<team>.Value
Order By teamName Ascending
Select teamName
Distinct
' displays team names in listbox
lstTeams.DataSource = teamQuery.ToList
End Sub
Private Sub lstTeams_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstTeams.SelectedIndexChanged
' Puts the player name and batting whose average was above the norm of team mates
Dim selectedteam = lstTeams.Text
Dim averagequery = From player In baseballdata.Descendants("player")
Let teamName = player.<team>.Value
Let hit = CDbl(player.<hits>.Value)
Let atbats = CDbl(player.<atbats>.Value)
Let playeraverage = hit / atbats
Where teamName = lstTeams.Text
Select playeraverage
Dim teamaverage As Double = averagequery.Average
Dim playerQuery = From player In baseballdata.Descendants("player")
Let playername = player.<name>.Value
Let teamName = player.<team>.Value
Let playeratbats = CDbl(player.<atbats>.Value)
Let playerhits = CDbl(player.<hits>.Value)
Let playeraverage = playerhits / playeratbats
Let formattedPlayerAverage = FormatNumber(playeraverage, 3)
Where teamName = selectedteam And playeraverage > teamaverage
Order By formattedPlayerAverage Descending
Select playername, formattedPlayerAverage
' Display player details in the data grid view
dgvDisplay.DataSource = playerQuery.ToList
dgvDisplay.CurrentCell = Nothing
' Set Column names to data grid view
dgvDisplay.Columns("playername").HeaderText = "Player"
dgvDisplay.Columns("formattedPlayerAverage").HeaderText = "Batting Average"
End Sub
End Class
XML 文件樣本:
<?xml version="1.0"?>
<!-- This file contains data on major league baseball players.-->
<Major_League_Baseball>
<player>
<name>Miguel Cabrera</name>
<team>Tigers</team>
<atBats>429</atBats>
<hits>145</hits>
</player>
<player>
<name>Dee Gordon</name>
<team>Marlins</team>
<atBats>615</atBats>
<hits>205</hits>
</player>
<player>
<name>Bryce Harper</name>
<team>Nationals</team>
<atBats>521</atBats>
<hits>172</hits>
</player>
<player>
<name>Paul Goldschmidt</name>
<team>Diamondbacks</team>
<atBats>567</atBats>
<hits>182</hits>
</player>
<player>
<name>Xander Bogaerts</name>
<team>Red Sox</team>
<atBats>613</atBats>
<hits>196</hits>
</player>
<player>
<name>Buster Posey</name>
<team>Giants</team>
<atBats>557</atBats>
<hits>177</hits>
</player>
<player>
<name>A.J. Pollock</name>
<team>Diamondbacks</team>
<atBats>609</atBats>
<hits>192</hits>
</player>
<player>
<name>Yunel Escobar</name>
<team>Nationals</team>
<atBats>535</atBats>
<hits>168</hits>
</player>
<player>
<name>Joey Votto</name>
<team>Reds</team>
<atBats>545</atBats>
<hits>171</hits>
</player>
<player>
<name>Jose Altuve</name>
<team>Astros</team>
<atBats>638</atBats>
<hits>200</hits>
</player>
<player>
<name>David Peralta</name>
<team>Diamondbacks</team>
<atBats>462</atBats>
<hits>144</hits>
</player>
<player>
<name>Michael Brantley</name>
<team>Indians</team>
<atBats>529</atBats>
<hits>164</hits>
</player>
<player>
<name>Lorenzo Cain</name>
<team>Royals</team>
<atBats>551</atBats>
<hits>169</hits>
</player>
</Major_League_Baseball>
我不是 XML 方面的專家,但是,似乎代碼對於團隊平均值來說是無限的teamaverage.
由於teamaverage
是“infinity”,那么所有玩家的平均值都不會大於“infinity”,並且在“Where”子句中不會產生任何玩家。
Where teamName = selectedteam And playeraverage > teamaverage
在我的小測試中,出現這種情況的原因是代碼中的拼寫錯誤。
在這兩個查詢中,代碼都有……
Let atbats = CDbl(player.<atbats>.Value)
和
Let playeratbats = CDbl(player.<atbats>.Value)
根據提供的atBats
,這應該是帶有大寫“B”的蝙蝠。 在此更改之后,代碼按預期工作。
Let atbats = CDbl(player.<atBats>.Value)
Let playeratbats = CDbl(player.<atBats>.Value)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.