c# - 将列表项显示到数据网格视图中 c#
问题描述
我有一个超类(抽象),然后是 2 个继承的类。
超类:课程
第 1 类:自行车
第 2 类:跑步
我还有一个包含我所有对象的列表
private List<Session> allSessions = new List<Session>();
我还声明了一些包含硬编码数据的数组来填充我的对象。
此外,Running 和 Cycling 有一个被覆盖的ToString()
方法,该方法根据类显示不同的数据。
public override string ToString() => $"Cycle Average RPM is {AverageRpm} and Average Resistance is {AverageResistance}";
我正在使用 for 循环来创建新对象并将其添加到我的列表中,如下所示
for (int i = 0; i < id.Length; i++)
{
Cycling Cycle = new Cycling(id[i], titles[i], date[i], duration[i], difficulty[i], instructor[i],
description[i], averageRpm[i], averageResistance[i]);
// Add new objects to list
allSessions.Add(Cycle);
}
我有一个 dataGridView 从我的列表中获取所有内容并显示如下:
我现在的问题是,我只想根据您在 ComboBox 中选择的内容显示特定数据,但有些东西不起作用,
ToString()
由于某种原因,未将覆盖的内容添加到列表中,每当我从 ComboBox 中选择不同的选项时,都不会显示任何内容。
编辑1:
// Filter Sessions by type using Linq
var sessions = new List<Session>();
var cyclingSessions = sessions.OfType<Cycling>();
var runningSessions = sessions.OfType<Running>();
listBox1.DataSource = null;
listBox1.Items.Clear();
if (cboMenu.SelectedIndex == 0)
{
// Populate GridView with data
dataDisplay.DataSource = allSessions;
}
else if (cboMenu.SelectedIndex == 1)
{
// Populate GridView with data
dataDisplay.DataSource = cyclingSessions;
}
else
{
// Populate GridView with data
dataDisplay.DataSource = runningSessions;
}
}
解决方案
您需要过滤您的会话列表并将其设置为您的数据源,您可以使用OfType
from轻松过滤列表System.Linq
它看起来像这样:
var sessions = new List<Sessions>();
var cyclingSessions = sessions.OfType<Cycling>();
var runningSessions = sessions.OfType<Running>();
dataDisplay.DataSource = cyclingSessions;
推荐阅读
- excel - 无法使用 vba 在散点图上绘制值
- ios - 如何强制 iOS 12 的主屏幕 Web 应用程序自动更新?
- javascript - 当焦点在输入字段中时,为什么日期选择器在 React 中闪烁?
- vba - 更换 PowerPoint 演示文稿中的字体时遇到问题
- c - 为什么函数指针不命名它们的参数?
- widget - 例如,如何在 odoo12 中创建一个下拉列表并用 1 到 5 的值填充它
- python - 只允许两个人使用不和谐的机器人命令
- python - 在 mac os 上安装 psycopg2 失败
- python - 如何管理两个线程,pynput鼠标监听器和while循环?
- json - 在弹性搜索中存储布尔值:优化?