簡體   English   中英

XML 文件未在 Datagrid 視圖 Visual Basic 中顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM