Foros del Web » Programación para mayores de 30 ;) » .NET »

Õbtener el valor X,Y de un datagridview C#

Estas en el tema de Õbtener el valor X,Y de un datagridview C# en el foro de .NET en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C#: Ver original double resultado = double . Parse ( dgwProforma. Rows [ X ] . Cells [ Y ] . Value ...
  #1 (permalink)  
Antiguo 04/03/2010, 11:02
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Õbtener el valor X,Y de un datagridview C#

Código C#:
Ver original
  1. double resultado = double.Parse(dgwProforma.Rows[X].Cells[Y].Value.ToString());

Esta bien hecho esto ?
  #2 (permalink)  
Antiguo 04/03/2010, 12:08
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Respuesta: Õbtener el valor X,Y de un datagridview C#

Hola Seria mejor que fueras mas especifico en cuanto a tu duda, porque lo el codigo que pones puede que este bien pero para hacer que..?

Saludos.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #3 (permalink)  
Antiguo 04/03/2010, 12:20
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Õbtener el valor X,Y de un datagridview C#

bueno en realidad quiero sumar una columna, decirme como hacerlo porfa

Estoy intentado con esto pero me bota error....


Link: http://img237.imageshack.us/img237/4120/47798636.jpg
  #4 (permalink)  
Antiguo 04/03/2010, 12:35
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Respuesta: Õbtener el valor X,Y de un datagridview C#

Lo que pasa es que te falta especificar la celda, seria algo asi:

Código:
DataGridViewCell dgc;

for (i = 0; i < dataGridView.Rows.Count; i++)
{
   dgc = dataGridView.Rows[i].Cells[0]; 
   //Tambien
   dgc = dataGridView.Rows[i].Cells["Nombre"]; 

  subtotal += dgc ;
  //tambien
  subtotal += dataGridView.Rows[i].Cells["Nombre"]; 
}
Espero que te sirva.

Saludos.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #5 (permalink)  
Antiguo 04/03/2010, 13:27
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Õbtener el valor X,Y de un datagridview C#

que hago mal brother xq no me sale...

Código C#:
Ver original
  1. DataGridViewCell dgc;
  2.                     double subtotal = 0;
  3.  
  4.                     for (int i = 0; i < dgwProforma.Rows.Count; i++)
  5.                     {
  6.                         dgc = double.Parse(dgwProforma.Rows[i].Cells[6]);
  7.                         subtotal += dgc;
  #6 (permalink)  
Antiguo 04/03/2010, 14:17
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Respuesta: Õbtener el valor X,Y de un datagridview C#

No te apures, lo solucionaremos.... que error te da?

Intenta quitarle el Parse, intenta con esto:

subtotal = subtotal + Convert.toDouble(dgwReforma.Rows[i].Cells[6]);

me comentas....
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #7 (permalink)  
Antiguo 04/03/2010, 14:35
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Õbtener el valor X,Y de un datagridview C#

Este es mi codigo entero..... porsiacaso estoy usando como DB a un EXCEL, el ultimo codigo es el que me trae problemas...

Código C#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Data.OleDb;
  10.  
  11. namespace Demo06
  12. {
  13.     public partial class frmProforma : Form
  14.     {
  15.         private DataView dvwProducto;
  16.        
  17.         public frmProforma()
  18.         {
  19.            
  20.             InitializeComponent();
  21.            
  22.         }
  23.  
  24.         private void cargarDatos(object sender, EventArgs e)
  25.         {
  26.             OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=D:\\PROGRAMACION\\Proyectos\\Proforma\\listaprecio.xls;extended properties=excel 8.0");
  27.             con.Open();
  28.  
  29.             //OleDbCommand cmd1 = new OleDbCommand("Select mes,año,producto,proveedor,udm,codigo,precio_soles,precio_dolares From [varios$]", con);
  30.             OleDbDataAdapter dap1 = new OleDbDataAdapter("Select mes,año,producto,proveedor,udm,codigo,precio_soles,precio_dolares From [varios$]", con);
  31.             //OleDbDataReader drd1 = cmd1.ExecuteReader();
  32.             DataSet dst = new DataSet();
  33.             dap1.Fill(dst);
  34.             dvwProducto = dst.Tables[0].DefaultView;
  35.             dgvProducto.DataSource = dvwProducto;
  36.             con.Close();
  37.  
  38.         }
  39.  
  40.         private void cargarProductos(object sender, EventArgs e)
  41.         {
  42.            dvwProducto.RowFilter = "producto Like '" + txtProducto.Text + "%'";
  43.             //dvwCliente.RowFilter = "CompanyName Like '" + txtCliente.Text + "%'";
  44.         }
  45.  
  46.         private void agregarProducto(object sender, DataGridViewCellEventArgs e)
  47.         {
  48.  
  49.             txtProductoShow.Text = dgvProducto.CurrentRow.Cells[2].Value.ToString();
  50.             txtPreU.Text = dgvProducto.CurrentRow.Cells[6].Value.ToString();
  51.  
  52.         }
  53.  
  54.         private void cerrar(object sender, EventArgs e)
  55.         {
  56.             this.Close();
  57.         }
  58.  
  59.         private void credito(object sender, EventArgs e)
  60.         {
  61.             MessageBox.Show("Programa creado por Eduardo Rodriguez para su viejo","Creditos");
  62.         }
  63.  
  64.         private void agregarAproforma(object sender, EventArgs e)
  65.         {
  66.             if (txtProductoShow.Text == "")
  67.             {
  68.                 MessageBox.Show("No se ha seleccionado ningun producto, porfavor vuelva a seleccionar el producto:\n\n-Si el producto no se llegara agregar, haga doble click en la respectiva celda\n-Si el producto sigue sin ser agregado, cierre la aplicacion y vuelvalo a ejecutarlo", "ADVERTENCIA");
  69.             }
  70.             else
  71.             {
  72.                 if (txtCantidad.Text == "")
  73.                 {
  74.                     MessageBox.Show("Usted no ha ingresado la cantidad", "ADVERTENCIA");
  75.                     txtCantidad.Focus();
  76.                 }else{
  77.                     double precioA = 0;
  78.                     precioA = double.Parse(txtPreU.Text) * double.Parse(txtCantidad.Text);
  79.  
  80.                     dgwProforma.Rows.Add(txtProductoShow.Text, txtCantidad.Text, txtPreU.Text, precioA.ToString(), "Eliminar");
  81.                     txtCantidad.Clear();
  82.                     txtPreU.Clear();
  83.                     txtProductoShow.Clear();
  84.  
  85.                     DataGridViewCell dgc;
  86.                     double subtotal = 0;
  87.  
  88.                     for (int i = 0; i < dgwProforma.Rows.Count; i++)
  89.                     {
  90.                         subtotal = subtotal + Convert.toDouble(dgwProforma.Rows[i].Cells[6]);
  91.                         subtotal += dgc;
  92.                     }
  93.  
  94.                     txtSubtotal.Text = subtotal.ToString();
  95.                     txtIgv.Text = (subtotal * 0.19).ToString();
  96.                     txtTotal.Text = (subtotal + (subtotal * 0.19)).ToString();
  97.  
  98.                 }
  99.  
  100.             }
  101.  
  102.         }
  103.  
  104.  
  105.  
  106.     }
  107. }

El error que me sale este :
  #8 (permalink)  
Antiguo 04/03/2010, 14:43
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Respuesta: Õbtener el valor X,Y de un datagridview C#

Bueno entonces quitaselo......

subtotal = (subtotal + dgwReforma.Rows[i].Cells[6]);

Has pruebas.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #9 (permalink)  
Antiguo 04/03/2010, 14:51
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Õbtener el valor X,Y de un datagridview C#

No se puede aplicar a operandos del tipo double y sistem.windows.form.datagridviewcell

Mira a mi se me ocurrio otro codigo, algo prehistorico pero funciona maso menos ya que suma mal, dale una oejada que pude haber fallado

Código C:
Ver original
  1. double acumulador = 0;
  2.  
  3.                     for (int i = 0; i < dgwProforma.Rows.Count-1; i++)
  4.                     {
  5.                         acumulador = precioA + acumulador;                        
  6.                     }
  7.  
  8.                     double subtotal = acumulador;
  9.                     precioA = 0;
  10.                    
  11.                     txtSubtotal.Text = subtotal.ToString();
  12.                     txtIgv.Text = (subtotal * 0.19).ToString();
  13.                     txtTotal.Text = (subtotal + (subtotal * 0.19)).ToString();

La cosa esta en que SUMA mal, y nose xq por mas que le doy vuelta al asunto pero al menos funciona, mal pero acumula aunque no siempre :S
  #10 (permalink)  
Antiguo 04/03/2010, 15:36
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Õbtener el valor X,Y de un datagridview C#

Disculpa, yo lo hice con Visual Basic, pero te puede servir... Puedes darle formato al datagrid para que la celda esté en formado moneda, y si no hay valor, se ponga un cero, de todos modos, evalua si al recorrer las filas tienes un valor nulo, uno sencillo q hize fue este (ahí te va el codigo, el otro más complicado no lo encuentro... parece q todo me salio bien por tener formateada la celda [el estilo] del datagridview en moneda y la base de datos también en moneda, así q formatea la columna de la hoja de excel y la columna del datagrid)
Código:
        Dim totalTratamientos As Double = 0
        Dim totalMedicamentos As Double = 0
        Dim totalArticulos As Double = 0
        Dim descuentoT As Double = 0
        Dim descuentoM As Double = 0
        Dim descuentoA As Double = 0
        Dim totalTotal As Double = 0
        Dim totalIva As Double = 0
        Try
            If Me.dgvTratamientos.Rows.Count > 0 Then
                For i As Integer = 0 To Me.dgvTratamientos.Rows.Count - 1
                    totalTratamientos = totalTratamientos + Me.dgvTratamientos.Rows(i).Cells(4).Value
                    descuentoT = descuentoT + Me.dgvTratamientos.Rows(i).Cells(7).Value
                    totalTotal = totalTotal + Me.dgvTratamientos.Rows(i).Cells(9).Value
                    totalIva = totalIva + Me.dgvTratamientos.Rows(i).Cells(8).Value
                Next
            End If
            If Me.dgvMedicamentos.Rows.Count > 0 Then
                For j As Integer = 0 To Me.dgvMedicamentos.Rows.Count - 1
                    totalMedicamentos = totalMedicamentos + Me.dgvMedicamentos.Rows(j).Cells(5).Value
                    descuentoM = descuentoM + Me.dgvMedicamentos.Rows(j).Cells(8).Value
                    totalTotal = totalTotal + Me.dgvMedicamentos.Rows(j).Cells(10).Value
                    totalIva = totalIva + Me.dgvMedicamentos.Rows(j).Cells(9).Value
                Next
            End If
            If Me.dgvArticulos.Rows.Count > 0 Then
                For k As Integer = 0 To Me.dgvArticulos.Rows.Count - 1
                    totalArticulos = totalArticulos + Me.dgvArticulos.Rows(k).Cells(4).Value
                    descuentoA = descuentoA + Me.dgvArticulos.Rows(k).Cells(7).Value
                    totalTotal = totalTotal + Me.dgvArticulos.Rows(k).Cells(9).Value
                    totalIva = totalIva + Me.dgvArticulos.Rows(k).Cells(8).Value
                Next
            End If
        Catch ex As Exception
            MessageBox.Show("No se logró calcular los valores de Resumen", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
        End Try
        Me.lblImporte.Text = Format(totalTratamientos + totalMedicamentos + totalArticulos, "$ #,##0.00")
        Me.lblDescuento.Text = Format(descuentoT + descuentoM + descuentoA, "$ #,##0.00")
        Me.lblTotal.Text = Format(totalTotal, "$ #,##0.00")
        Me.lblIva.Text = Format(totalIva, "$ #,##0.00")
PD. Lo desglosé un poco más...
  #11 (permalink)  
Antiguo 04/03/2010, 15:59
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Õbtener el valor X,Y de un datagridview C#

Código C:
Ver original
  1. double subtotal = 0;
  2.  
  3.                     for (int i = 0; i > dgwProforma.RowCount; i++ )
  4.                     {
  5.  
  6.                         subtotal += double.Parse(dgwProforma.Columns["Total"].ToString());
  7.                     }
  8.  
  9.                     txtSubtotal.Text = subtotal.ToString();
  10.                     txtIgv.Text = (subtotal * 0.19).ToString();
  11.                     txtTotal.Text = (subtotal + (subtotal * 0.19)).ToString();


Mira ya me sale, pero me vota valor 0 no tengo idea porque ....
  #12 (permalink)  
Antiguo 12/06/2012, 14:56
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Õbtener el valor X,Y de un datagridview C#

Que tal mira lo que andaban haciendo mal es que querian acceder a la celda como tal y pues cuando lo tratabas de parsear en verdad no parseabas su valor (0,1,2,3 etc ) sino que tratanas de parsear algo asi: system.Web.UI.WebControls.TableCell lo que obviamente no es un numero. Lo que tienes que ahcer es algo como esto:

int cant = Convert.ToInt16(TuGridView.Rows[i].Cells[4].Text);

o a lo que lo quieras convertir, te sugiero hagas validaciones previas antes de llamar a esta funcion ;) saludos y espero haber sido de ayuda como en muchas ocaciones este foro lo ha sido para mi :D

Etiquetas: datagridview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:52.