首页 > 解决方案 > 如何获取对象中的行和单元格

问题描述

我有来自的对象,如果可以的话combobox.DataSource,我需要在对象或数据源中使用DisplayMember和。ValueMember我还想遍历这些数据,但我不知道如何,因为无法从中获取单元格。

有没有办法在数据源或对象中使用数据?

这是我想在其中使用单元格的对象

标签: c#winformsobjectcombobox

解决方案


您不必使用object,只需将其投回即可。

假设您是为其赋值的人CmbUnitName.DataSource,您应该知道该对象的类型。在这种情况下,您可以轻松地将其转换回集合/数据表并循环遍历它。

例如,如果它包含一个类对象列表Unit

//cast it back
var cmbUnits = (List<Unit>) CmbUnitName.DataSource;
//loop through collection
foreach(var unit in cmbUnits) 
{
    //access fields/properties
    Console.WriteLine(unit.Id+" "+unit.UnitName);
}

转换后的部分(循环遍历元素和属性)将在很大程度上取决于数据源的性质。无论如何,只要知道类型,就应该能够弄清楚如何遍历它。

如果您不知道原始对象的类型,并且由于某种原因无法从代码中找到它,那么您可以通过调用CmbUnitName.DataSource.GetType.

请注意,ComboBox.DataSource它不包含任意对象。属性值必须是:

实现 IList 接口或数组的对象。

因此,大多数时候您应该能够将其转换回IList. 如果您想创建某种适用于任何数据绑定组合框的通用实现,您可以试试这个。但我有一种强烈的感觉,在你的情况下,你只需要转换DataSource为原始类型。


推荐阅读