Как получить строку и ячейку в объекте - PullRequest
0 голосов
/ 21 мая 2019

У меня есть объект из combobox.DataSource, и мне нужно использовать DisplayMember и ValueMember внутри объекта или источника данных, если я могу.Я также хочу просмотреть эти данные и не знаю как, потому что не могу получить из них ячейки.

Есть ли способ использовать данные в источнике данных или объекте?

This is object I want to use cells inside it

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вам не нужно использовать 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 к исходному типу.

0 голосов
/ 21 мая 2019

Если у вас есть данные объекта, вы можете использовать:

    if (comboBox1.SelectedValue != null)
        {
            TestObject current = (TestObject)comboBox1.SelectedValue;
            MessageBox.Show(current.Value.ToString());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...