Cargar una imagen a un gridView de C#.


Hola a Tod@s.

Una pequeña ayuda para la gente del gremio que trabaje con C# y que quiera cargar una imagen a un gridView..

Vamos a ver como:

  • Cargar una imagen en un gridView desde la BBDD (Sql Server).
  • Cargar una imagen desde un archivo de imagen.
  • Grabar una imagen en nuestra BBDD (Sql Server).

Cargar una imagen en un gridView desde la BBDD (Sql Server).
Primero cuando estemos cargando el gridView debemos de definir la columna que va a contener la imagen del tipo RepositoryItemPictureEdit. para ello utilizaremos el código siguiente:
.
.
.
RepositoryItemPictureEdit pictureEdit = gridSubvarios.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
pictureEdit.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
pictureEdit.CustomHeight = 60;
pictureEdit.NullText = " ";
column.ColumnEdit = pictureEdit;
column.UnboundType = DevExpress.Data.UnboundColumnType.Object;
.
.
.

despues asignamermos la tabla al datasource del gridView:
.
.
gridSubvarios.DataSource = ds.Tables[0];
.
.

Cargar una imagen desde un archivo de imagen.
A través de un control OpenFileDialog, y un botón para abrir este control. Con el siguiente codigo:
private void BtnAsignarImagen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            System.Windows.Forms.DialogResult dr = ofd.ShowDialog();
            if (dr == DialogResult.OK)
            {
                loadImageToDataGrid(ofd.FileName);
            }            
        }

Al botón abrir del dialog le asignamos nuestro evento de cargar imagen.
private void loadImageToDataGrid(string strFilePath)
        {
            if (Grids.GetGridRowsCount(gridSubvarios) > 0)
            {
                try
                {
                    DataRow dr = Grids.GetGridRow(gridSubvarios);
                    Image image = Image.FromFile(strFilePath);
                    byte[] img = DevExpress.XtraExport.ByteImageConverter.ToByteArray(image, 
                                                                                         System.Drawing.Imaging.ImageFormat.Png);
                    dr["PictureEdit"] = img;
                    PonerMantenimientoEnEdicion();
                }
                catch (Exception ex)
                {

                }
            }
        }

Así ya nos debería aparecer en nuestro gridView.

Grabar una imagen en nuestra BBDD (Sql Server).
Yo tengo definida la columna de la imagen a guardar como tipo image en la tabla de la BBDD. Yo inserto en la tabla a traves de procedimiento almacenado
.
.
.
                        ExecStoredProc(TVariables.IDSesion, "dbo.ProcedimientoInsert",
                            new TSqlParameter("@IdEncuesta", System.Data.SqlDbType.Int, Convert.ToInt32(prvTextBoxID.Text)),
                            new TSqlParameter("@IdVarios", System.Data.SqlDbType.Int, Convert.ToInt32(ucF2Varios.prvTextBoxID.Text)),
                            new TSqlParameter("@IdSubvarios", System.Data.SqlDbType.Int, Convert.ToInt32(dr[0].ToString())),
                            new TSqlParameter("@Imagen", System.Data.SqlDbType.VarBinary, (((byte[])dr[2]).Length == 4) ? (object)DBNull.Value : (byte[])dr[2]));
.
.
.

Espero os sirva de ayuda.

Comentarios

Entradas populares