mostrar una imagen al hacer clic en una celda de un Datagridview

Iniciado por irvincnt93, 10 Febrero 2015, 01:20 AM

0 Miembros y 1 Visitante están viendo este tema.

irvincnt93

hola comunidad necesito de su ayuda...

tengo este pequeño código en donde pretendo mostrar en un Datagridview una tabla que con una sentencia en sql la muestro, después quiero que en la columna dirección se muestre la palabra de "mostrar" y que al hacer clic en ella se muestre la imagen que tengo guardada en la base de datos (tengo guardado el path).

hasta este momento el código me muestra la tabla y así también tengo uno que otro código que está mal porque saque la idea de varias aplicaciones y ahora me encuentro con ese problema .. ayuda porfis

Código (csharp) [Seleccionar]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics;

namespace abrirPathEnListas
{
   public partial class Form2 : Form
   {
       SqlConnection conexion = new SqlConnection();
       SqlCommand comandos = new SqlCommand();
       
       public Form2()
       {
           InitializeComponent();
       }
       class customcolumn : System.Windows.Forms.DataGridViewLinkColumn
       {
           public Dictionary<int, string> urls = new Dictionary<int, string>();
       }
       private void Form2_Load(object sender, EventArgs e)
       {
           conexion.ConnectionString = @"Data Source=IRVIN-PC;Initial Catalog=imagenes;Integrated Security=True";
           SqlDataReader dr;
           comandos.Connection = conexion;
           comandos.CommandText = "SELECT periodo,departamento,materia,profesor,grupo,direccion FROM actasPath";
           comandos.CommandType = CommandType.Text;
           conexion.Open();
           dataGridView1.Rows.Clear();

           dr = comandos.ExecuteReader();

           while (dr.Read())
           {
               int renglon = dataGridView1.Rows.Add();

               dataGridView1.Rows[renglon].Cells["periodos"].Value = dr.GetString(dr.GetOrdinal("periodo")).ToString();
               dataGridView1.Rows[renglon].Cells["dpto"].Value = dr.GetString(dr.GetOrdinal("departamento")).ToString();
               dataGridView1.Rows[renglon].Cells["materias"].Value = dr.GetString(dr.GetOrdinal("materia")).ToString();
               dataGridView1.Rows[renglon].Cells["profesores"].Value = dr.GetString(dr.GetOrdinal("profesor")).ToString();
               dataGridView1.Rows[renglon].Cells["grupos"].Value = dr.GetString(dr.GetOrdinal("grupo")).ToString();
               
               //tengo aquí que guardar el valor que extraigo de la base de datos y almacenarla en una variable para mostrarla en la parte de abajo donde tengo la direccion de la imagen??

               dataGridView1.Rows[renglon].Cells["path"].Value = dr.GetString(dr.GetOrdinal("direccion")).ToString();
               int row_index = 0;
               int column_index = 0;
               customcolumn c = new customcolumn();
               dataGridView1.Columns.Add(c);
               dataGridView1.Rows.Add();

               dataGridView1.Rows[row_index].Cells[column_index].Value = "buscar";

               ((customcolumn)(dataGridView1.Columns[column_index])).urls.Add(row_index, "C:\\Users\\irvin\\Pictures\\1.png");
           }
         
           conexion.Close();

           
       }
       private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
       {
           
       }

       private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
       {
           foreach (KeyValuePair<int, string> url in ((customcolumn)(dataGridView2.Columns[e.ColumnIndex])).urls)
           {
               if (url.Key == e.RowIndex)
               {
                   Process.Start(url.Value);
                   break;
               }
           }

         
       }
   }
}