Подсчет количества уникальных изображений в DataGridViewImageColumn - PullRequest
0 голосов
/ 05 ноября 2008

В DataGridView, привязанном к DataView, где ячейки в столбце будут содержать одно из двух изображений из ImageList (например, зеленое «онлайн» изображение или красное «автономное» изображение), как вы можете суммировать количество вхождений каждого изображения при итерации по строкам DataGridView?

Свойства Value и FormattedValue объекта DataGridViewImageCell возвращают разные ссылки, даже если записи в базовом объекте DataTable были созданы путем ссылки на одно и то же изображение из ImageList.

Таким образом, вместо того, чтобы считать 4 случая «онлайн» и 6 случаев «оффлайн», я получаю 10 случаев предположительно разных изображений.

1 Ответ

1 голос
/ 05 ноября 2008

Учитывая описание, лучшее, что я могу предложить, - это вручную отследить ключ / индекс изображения в .Tag ячейки, а затем запустить свой отдельный счетчик для .Tag. В качестве альтернативы, если у вас также есть данные в списке / коллекции, подсчитайте данные из исходного источника.

[обновить после ответа] Поскольку данные привязаны к данным, вы должны иметь возможность итерировать .Rows из DataGridView, получая .DataBoundItem каждого. Затем для каждого базового объекта вы сможете получить фактическое значение свойства, используя TypeDescriptor:

        string propName = col.DataPropertyName;
        // could also be a dictionary/hashset etc
        // could be typed if you know the type
        List<object> values = new List<object>();
        foreach(DataGridViewRow row in dgv.Rows)
        {
            object obj = row.DataBoundItem;
            // could be typed (via cast) if you know the type
            object val = TypeDescriptor.GetProperties(obj)[propName].GetValue(obj);
            if (!values.Contains(val))
            {
                values.Add(val);
            }
        }

что нибудь поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...