将列表中的图像集合添加到DataGridView

时间:2014-06-28 16:52:55

标签: c# winforms list datagridview

我正在尝试将图像集添加到DataGridView我已填充了实体框架数据的图像列表中。

图像集实际上是根据我存储在数据库中的“image.jpg”名称生成的,我想知道如何将我的图像列表集合与DataGridView中的其他数据一起添加。

以下是代码:

quinEntities context1 = new quinEntities();
BindingSource bi = new BindingSource();

var query = from x in context1.studentinfoes
            join y in context1.classinfoes
            on x.classid equals y.classid
                    select new { y.classname, x.surname, x.religion };

bi.DataSource = query.ToList();
dataGridView1.DataSource = bi;

List<Image> mee = new List<Image>();
var passports = context1.studentinfoes.Select(u => u.passport);

foreach (var passport in passports)
{
    Image okk = new Bitmap(passport);
    mee.Add(okk);
}

DataGridViewImageColumn img = new DataGridViewImageColumn();
foreach (var me in mee)
{
    img.Image = me;
    dataGridView1.Columns.Add(img);
}

1 个答案:

答案 0 :(得分:1)

你应该能够一次完成所有这一切。

内部查询从EF获取数据,第一次调用ToList()执行EF查询。

外部查询然后遍历第一个结果集,创建一个新的Bitmap并将其添加到第二个匿名类型:

quinEntities context1 = new quinEntities();
var query = (from x in
                (from s in context1.studentinfoes
                 join c in context1.classinfoes
                     on s.classid equals c.classid
                 select new
                    {
                        c.classname,
                        s.surname,
                        s.religion,
                        s.passport
                    }).ToList()
             select new
                {
                    x.classname,
                    x.surname,
                    x.religion,
                    passport = new Bitmap(x.passport)
                });

        dataGridView1.DataSource = query.ToList();

除非您有特定的理由使用它,否则您也不需要BindingSource