0

在绑定到 DataView 的 DataGridView 中,列中的单元格将包含 ImageList 中的两个图像之一(例如绿色“在线”图像或红色“离线”图像),如何计算每个图像的出现次数遍历 DataGridView 的行时?

DataGridViewImageCell 的 Value 和 FormattedValue 属性返回不同的引用,即使基础 DataTable 中的条目是通过引用 ImageList 中的相同 Image 创建的。

因此,与其计算 4 次“在线”和 6 次“离线”,我得到了 10 次据称不同的图像。

4

1 回答 1

1

鉴于描述,我可以建议的最好方法是手动跟踪单元格的 .Tag 中的图像键/索引,然后在 .Tag 上运行您的不同计数。或者,如果您在列表/集合中也有数据,请计算来自原始来源的数据。

[更新以下回复] 由于数据是数据绑定的,因此您应该能够迭代 的.RowsDataGridView获取.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);
            }
        }

那有什么帮助吗?

于 2008-11-05T11:28:26.870 回答