0

DataView にバインドされた DataGridView では、列のセルに ImageList の 2 つの画像のいずれかが含まれます (たとえば、緑色の「オンライン」画像または赤色の「オフライン」画像)。各画像の出現回数を合計するにはどうすればよいですか? DataGridView の行を反復するときは?

DataGridViewImageCell の Value プロパティと FormattedValue プロパティは、基になる DataTable のエントリが ImageList から同じ Image を参照して作成された場合でも、異なる参照を返します。

したがって、「オンライン」の 4 回の出現と「オフライン」の 6 回の出現をカウントするのではなく、10 回の異なる画像の出現を取得しています。

4

1 に答える 1

1

説明を踏まえて、私が提案できる最善の方法は、セルの.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);
            }
        }

それは何か助けになりますか?

于 2008-11-05T11:28:26.870 に答える