如何获取嵌套在另一个类中的字段形式 class 对象的值

how to get values of field form class object nested in another clas

public void Fill()
    {
        List<testowa1> lista = new List<testowa1>();
        var item = new testowa1()
        {
            ID = 1,
            Nazwa = "Pierwszy",
            Cena = new testowa2()
            {
                Cena = 32.22M
            }
        };
        lista.Add(item);
        lista.Add(item);
        lista.Add(item);
        lista.Add(item);

        dataGridView1.DataSource = lista;
    }

    public class testowa1
    {
        public int ID { get; set; }
        public string Nazwa { get; set; }
        public testowa2 Cena { get; set; }
    }
    public class testowa2
    {
        public decimal Cena { get; set; }
    }

结果是:

那么,如何将 testowa2.Cena 的值放入数据网格中? 我不知道该怎么办。我在 google 中查找,但没有找到

我无法完全理解你的问题。

你想要这样的东西吗;

var cenaValues = dataGridView1.DataSource.Items.Where(x => x.Cena != null)
.Select(x => x.Cena.Cena).ToList();

您可以在 testowa1 中添加 属性 以公开保存在 testowa2 中的小数 属性。这会将该值放入 DataGridview,但您仍然需要隐藏将 testowa2 显示为字符串的额外列。

我相信这是可行的,因为数据绑定只能在对象的属性中深入一层。在您的代码中,它不会显示 testowa2 的十进制值,而只会显示与 testowa2 等效的字符串,因为它不会深入到 testowa2 以获取十进制值。免责声明:我实际上并不太了解数据绑定,也找不到任何东西来支持我的解释。所以这可能是错误的,但我对您的代码所做的更改确实有效。

public class testowa1
{
    public decimal CenaValue
    {
        get { return Cena.Cena; }
        set { Cena.Cena = value; }
    }
}

// in Fill
var item = new testowa1()
{
    ID = 1,
    Nazwa = "Pierwszy",
    Cena = new testowa2(),
    CenaValue = 32.22M
};

// after you added the list as the datasource
dataGridView1.Columns["Cena"].Visible = false;