根据所选值从列表中检索项目
Retrieving an item from a list based on selected value
函数retrieveFixtureReport() returns一个Report列表,每个Report包含一个PlayerID。我试图设置我的标签以反映从 cmbSelectedPlayer 选择的 selected 报告。列表中的每个报告都包含一个唯一的 PlayerID。我已经尝试了多种不同的方法来访问 selected 报告的属性,包括 LINQ,但到目前为止都没有成功。 For Each 循环似乎不是 select 只有一个报告的正确选项,它还阻止我从 cmbSelectedPlayer selecting 其他 PlayerID(仅显示列表中的最后一个报告)。代码如下所示:
Public Sub setFixtureReport()
'If UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem IsNot Nothing Then
If UC_Menu_Scout1.cmbSelectedPlayer.Items.Count > 0 Then
Dim getPlayerReport = _
(From rpt As Report In retrieveFixtureReport() _
Where rpt.PlayerID = UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem.PlayerID) '.AsEnumerable
'For Each rpt As Report In getPlayerReport()
'For Each rpt As Report In retrieveFixtureReport.Where(Function(x) x.PlayerID = UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem.PlayerID)
'Dim rpt As Report = getPlayerReport 'retrieveFixtureReport(0)
'*****General Information
UC_Menu_Scout1.lblRptPosition.Text = rpt.PositionPlayed
UC_Menu_Scout1.lblFoot.Text = rpt.PreferredFoot
UC_Menu_Scout1.txtComments.Text = rpt.Comments
UC_Menu_Scout1.lblStatus.Text = rpt.MonitorStatus
'Next
setColours()
'End If
End If
End Sub
组合框 cmbSelectedPlayer 由 playerList 填充(这也添加到 retrieveFixxtureReport 中):
UC_Menu_Scout1.cmbSelectedPlayer.DataSource = playerList
UC_Menu_Scout1.cmbSelectedPlayer.DisplayMember = "PlayerFullName"
UC_Menu_Scout1.cmbSelectedPlayer.ValueMember = "PlayerID"
如有任何建议,我们将不胜感激。
如果您的组合框绑定到 List(Of Player)
,那么您需要做的就是将 SelectedItem 转换为它的类型:
Dim player = TryCast(UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem, Player)
If Not player Is Nothing Then
Dim getPlayerReport = (From rpt As Report In retrieveFixtureReport()
Where rpt.PlayerID = player.PlayerID).FirstOrDefault()
If Not getPlayerReport Is Nothing Then
UC_Menu_Scout1.lblRptPosition.Text = getPlayerReport.PositionPlayed
UC_Menu_Scout1.lblFoot.Text = getPlayerReport.PreferredFoot
UC_Menu_Scout1.txtComments.Text = getPlayerReport.Comments
UC_Menu_Scout1.lblStatus.Text = getPlayerReport.MonitorStatus
End If
End If
函数retrieveFixtureReport() returns一个Report列表,每个Report包含一个PlayerID。我试图设置我的标签以反映从 cmbSelectedPlayer 选择的 selected 报告。列表中的每个报告都包含一个唯一的 PlayerID。我已经尝试了多种不同的方法来访问 selected 报告的属性,包括 LINQ,但到目前为止都没有成功。 For Each 循环似乎不是 select 只有一个报告的正确选项,它还阻止我从 cmbSelectedPlayer selecting 其他 PlayerID(仅显示列表中的最后一个报告)。代码如下所示:
Public Sub setFixtureReport()
'If UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem IsNot Nothing Then
If UC_Menu_Scout1.cmbSelectedPlayer.Items.Count > 0 Then
Dim getPlayerReport = _
(From rpt As Report In retrieveFixtureReport() _
Where rpt.PlayerID = UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem.PlayerID) '.AsEnumerable
'For Each rpt As Report In getPlayerReport()
'For Each rpt As Report In retrieveFixtureReport.Where(Function(x) x.PlayerID = UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem.PlayerID)
'Dim rpt As Report = getPlayerReport 'retrieveFixtureReport(0)
'*****General Information
UC_Menu_Scout1.lblRptPosition.Text = rpt.PositionPlayed
UC_Menu_Scout1.lblFoot.Text = rpt.PreferredFoot
UC_Menu_Scout1.txtComments.Text = rpt.Comments
UC_Menu_Scout1.lblStatus.Text = rpt.MonitorStatus
'Next
setColours()
'End If
End If
End Sub
组合框 cmbSelectedPlayer 由 playerList 填充(这也添加到 retrieveFixxtureReport 中):
UC_Menu_Scout1.cmbSelectedPlayer.DataSource = playerList
UC_Menu_Scout1.cmbSelectedPlayer.DisplayMember = "PlayerFullName"
UC_Menu_Scout1.cmbSelectedPlayer.ValueMember = "PlayerID"
如有任何建议,我们将不胜感激。
如果您的组合框绑定到 List(Of Player)
,那么您需要做的就是将 SelectedItem 转换为它的类型:
Dim player = TryCast(UC_Menu_Scout1.cmbSelectedPlayer.SelectedItem, Player)
If Not player Is Nothing Then
Dim getPlayerReport = (From rpt As Report In retrieveFixtureReport()
Where rpt.PlayerID = player.PlayerID).FirstOrDefault()
If Not getPlayerReport Is Nothing Then
UC_Menu_Scout1.lblRptPosition.Text = getPlayerReport.PositionPlayed
UC_Menu_Scout1.lblFoot.Text = getPlayerReport.PreferredFoot
UC_Menu_Scout1.txtComments.Text = getPlayerReport.Comments
UC_Menu_Scout1.lblStatus.Text = getPlayerReport.MonitorStatus
End If
End If