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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  necesito agregar la suma total de todos los elemtentos de una matriz pero no me deja usar row.cells. adjunto codigo abaj
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: necesito agregar la suma total de todos los elemtentos de una matriz pero no me deja usar row.cells. adjunto codigo abaj  (Leído 1,947 veces)
Piton

Desconectado Desconectado

Mensajes: 1


Ver Perfil
necesito agregar la suma total de todos los elemtentos de una matriz pero no me deja usar row.cells. adjunto codigo abaj
« en: 19 Noviembre 2022, 23:55 pm »

double total = 0;

            foreach (DataGridView row in dgvImportes.Rows)
            {
                total += Convert.ToDouble(row.Cells[]);           
            }





el error es:
Compiler Error CS1061
Article
10/27/2021
2 minutes to read
12 contributors
'type' does not contain a definition for 'name' and no accessible extension method 'name' accepting a first argument of type 'type' could be found (are you missing a using directive or an assembly reference?).

This error occurs when you try to call a method or access a class member that does not exist.

espero su respuesta y muchas gracias!!!


En línea

Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: necesito agregar la suma total de todos los elemtentos de una matriz pero no me deja usar row.cells. adjunto codigo
« Respuesta #1 en: 22 Noviembre 2022, 18:33 pm »

Muy buenas. Paso a enumerar los problemas que tienes en el código, y al final la solución:

1. Para poder usar la función "System.Convert.To*", el tipo debe implementar la interfaz IConvertible.

2. La función "System.Convert.To*" no está diseñada para interpretar un array de tipos IConvertible, ni mucho menos una colección de celdas de un datagridview o DataGridViewCellCollection. Para eso puedes utilizar la función "System.Array.ConvertAll".

Para lo que deseas hacer, puedes utilizar esta simple función que permite sumar los valores de todas las celdas de una fila:

Código
  1. public static decimal SumCellValues(DataGridViewRow row) {
  2.  
  3. System.Decimal tempVar = 0M;
  4.  
  5. IEnumerable<decimal> values = (
  6. from DataGridViewCell cell in row.Cells
  7. where decimal.TryParse(cell.Value, out tempVar)
  8. select decimal.Parse(cell.Value));
  9.  
  10. return Enumerable.Sum(values);
  11. }

Nota: los valores no numéricos son ignorados.

O esta función de sobrecarga que permite elegir el tipo numérico de retorno:

Código
  1. public static T SumCellValues<T>(DataGridViewRow row) where T: IConvertible {
  2. return (T)SumCellValues(row);
  3. }

Saludos!


« Última modificación: 22 Noviembre 2022, 18:50 pm por Enjuto Mojamuto » En línea

@%$& #$ %&#$, ¡hay que decirlo más!.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines