elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Tipos de datos en un DataGridView ¿como conservarlos? [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tipos de datos en un DataGridView ¿como conservarlos? [Solucionado]  (Leído 6,633 veces)
Xavelets

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Tipos de datos en un DataGridView ¿como conservarlos? [Solucionado]
« en: 5 Septiembre 2011, 03:31 am »

Hola amigos!!


Escribo esta consulta porque ni siquiera se si el título describe mi duda....

Tengo un formulario con un DataGridView con tres columnas de tipo DataGridViewTextBoxColumn: "cantidad"  "precio_unitario"  e "importe"

a las dos ultimas las he configurado con formato de moneda de tal manera que presentan los numeros precedidos del simbolo $.....

la idea es que:              importe = cantidad * precio_unitario


Mientras asigne valores de tipo float programaticamente a las celdas de dichas columnas, se realiza correctamente la operación deseada.

El problema es cuando desde el formulario cambio el valor de la celda en la columna "precio_unitario" dicho valor pareciera ser un string (en realidad un object), por lo que ya no realiza la operación deseada de forma correcta.

Lo he resuelto momentáneamente usando el evento CellValueChanged y con el siguiente código:
Código:
if (datagridview1.Columns[e.ColumnIndex].Name == "precio_u")
{
   int cant = Convert.ToInt32(datagridview1.Rows[e.RowIndex].Cells["cantidad"].Value);

   datagridview1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = float.Parse(datagridview1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
   datagridview1.Rows[e.RowIndex].Cells[4].Value = cant * float.Parse(datagridview1.Rows[e.RowIndex].Cells["precio_u"].Value.ToString());
}

Como pueden ver primero obtengo el valor contenido en la celda, para converirlo a string, y luego poderlo convertir a float, y de nuevo asignarlo a la misma celda, eso sin contar con el hecho de esas horribles y enormes sentencias jeej  :-[

Esto funciona, si embargo creo que dista mucho de ser la forma más adecuada y eficiente.

¿Alguien conoce una mejor forma de hacer esto?

Les agradeceré mucho sus respuestas

Salu2


« Última modificación: 5 Septiembre 2011, 14:03 pm por Xavelets » En línea

“Llegará un día en que un hombre te hablará a miles de kilómetros de distancia, y tu tranquilamente le podrás escuchar donde estés, más no le podrás ver por estar tan lejos.” Quinta profecía Maya.
Xavelets

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Tipos de datos en un DataGridView ¿como conservarlos?
« Respuesta #1 en: 5 Septiembre 2011, 14:03 pm »

Hola a todos de nuevo!!!

Después de horas de búsqueda infructuosa en la red, y de consultarlo con la almoada creo que di con la solución.

Buscando minuciosamente en las propiedades de la clase DataGridViewCell me encontré con la propiedad ValueType, así que intente el siguiente código:

Código:
if (dGV_l.Columns[e.ColumnIndex].Name == "precio_u")
{
   int cant = Convert.ToInt32(dGV_l.Rows[e.RowIndex].Cells["cantidad"].Value);

   dGV_l.Rows[e.RowIndex].Cells[e.ColumnIndex].ValueType = typeof(float);
   dGV_l.Rows[e.RowIndex].Cells["precio_u"].ValueType = typeof(float);

   dGV_l.Rows[e.RowIndex].Cells[4].Value = cant * (float)dGV_l.Rows[e.RowIndex].Cells["precio_u"].Value;
}

Como pueden ver este código parece mas elegante......
la novedad es que a las celdas de "precio_unitario" e "importe" les asigno a su propiedad ValueType el tipo float;  gracias a esto, en la última línea ya puedo hacer un cast simple a float.

Por cierto, todavía mejor es establecer la propiedad ValueType de la columna entera al tiempo de cargar el formulario.

Espero a alguien mas le sirva.

Salu2


En línea

“Llegará un día en que un hombre te hablará a miles de kilómetros de distancia, y tu tranquilamente le podrás escuchar donde estés, más no le podrás ver por estar tan lejos.” Quinta profecía Maya.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con datagridview (SOLUCIONADO)
.NET (C#, VB.NET, ASP)
akonerz 3 6,096 Último mensaje 15 Septiembre 2009, 22:25 pm
por akonerz
[SOLUCIONADO] manejar datos con datagridview en C#
.NET (C#, VB.NET, ASP)
SRVAM 6 15,933 Último mensaje 23 Septiembre 2009, 19:03 pm
por SRVAM
[SOLUCIONADO] VB - Duda con DataGridView
.NET (C#, VB.NET, ASP)
AlonsoCN 2 9,013 Último mensaje 3 Noviembre 2009, 05:57 am
por AlonsoCN
Como insertar datos de un datagridview a otro
Programación Visual Basic
luis_zenick 0 2,273 Último mensaje 11 Diciembre 2012, 23:09 pm
por luis_zenick
Tipos Valor y Tipos Referencia(Solucionado)
.NET (C#, VB.NET, ASP)
Senior++ 5 3,690 Último mensaje 4 Noviembre 2014, 01:38 am
por DarK_FirefoX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines