Как показать изображение в ячейке вида сетки из пути к изображению, не используя событие cutomunboundcolumn? - PullRequest
5 голосов
/ 07 мая 2011

У меня есть сетка, в которой я хочу показать изображения, пути которых хранятся в базе данных. Я пробовал этот код, но он повторяет только одну картинку во всех строках. Может ли кто-нибудь помочь мне решить эту проблему? Я не хочу использовать событие customunboundcolumn. Мой код показан ниже

 SqlCommand cmd = new SqlCommand("select * from picture", con);
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adp.Fill(ds);
        gridControl1.DataSource = ds.Tables[0];
        DevExpress.XtraGrid.Columns.GridColumn image = new DevExpress.XtraGrid.Columns.GridColumn();
        gridView1.Columns.Add(image);
        image.Caption = "Image";
        image.Name = "img";
        image.FieldName = "img";
        image.Visible = true;
        image.VisibleIndex = 3;
        int row = ds.Tables[0].Rows.Count;
        DevExpress.XtraGrid.Views.Base.ColumnView cgv = (DevExpress.XtraGrid.Views.Base.ColumnView)gridView1;
        DevExpress.XtraEditors.Repository.RepositoryItemImageEdit rpic = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit();
        rpic.NullText = "No Image";
        rpic.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
        DevExpress.Utils.ImageCollection images = new DevExpress.Utils.ImageCollection();
        for (int i = 0; i < row; i++)
        {
            string imgpath = ds.Tables[0].Rows[i]["fpath"].ToString();

            images.Images.Add(Image.FromFile(imgpath));

            rpic.Images = images;
            gridView1.Columns["img"].ColumnEdit=rpic;

            gridView1.SetRowCellValue(i,"Image",rpic);

            gridView1.SelectRow(i);
            MessageBox.Show(gridView1.FocusedRowHandle.ToString());
            // gridView1.SetFocusedRowCellValue("Image",gridView1.Columns["img"].ColumnEdit= rpic);
        }
        gridView1.BestFitColumns();

Ответы [ 2 ]

1 голос
/ 04 ноября 2016

Вам нужно сделать свой ColumnEdit как RepositoryItemPictureEdit

RepositoryItemPictureEdit rePictureEdit = gridControl1.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
rePictureEdit.NullText = " ";
rePictureEdit.SizeMode = PictureSizeMode.Squeeze;

columnName.ColumnEdit = rePictureEdit;

Тогда

columnName.Value = Image.FromFile($@"{imagePath}");
0 голосов
/ 27 декабря 2011

Вы должны использовать DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit.

...