繁体   English   中英

将列表项显示到数据网格视图中 C#

[英]display list items into data grid view c#

我有一个超类(抽象),然后是 2 个继承类。
超类:会话
第 1 类:骑自行车
第 2 课:跑步

我还有一个包含我所有对象的列表
private List<Session> allSessions = new List<Session>();

我还声明了一些包含硬编码数据的数组来填充我的对象。

此外,Running and 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;
        }
    }

您需要筛选会话列表,并设置为您的数据源,你可以轻松过滤使用列表OfTypeSystem.Linq它看起来是这样的:

var sessions = new List<Sessions>();
var cyclingSessions = sessions.OfType<Cycling>();
var runningSessions = sessions.OfType<Running>();
dataDisplay.DataSource = cyclingSessions;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM