• Miércoles 8 de Mayo de 2024, 03:46

Autor Tema:  restar celda de datagridview  (Leído 3943 veces)

kancerman

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
restar celda de datagridview
« en: Jueves 14 de Abril de 2011, 08:04 »
0
hola
tengo un datagridview con datos que ingreso desde el mismo form, una columna es "total" y tiene el indice 3 , esta columna la sumo con un boton y el resultado lo asigno a un textbox
Código: C#
  1.  
  2. int sum = 0;
  3.             for (int i = 0; i < dataGridView2.RowCount; i++)
  4.             {
  5.                 sum = sum + int.Parse(dataGridView2.Rows[i].Cells[3].Value.ToString());
  6.             }
  7.             textBox19.Text = sum.ToString();
  8.  
  9.  
el asunto es que con otro boton necesito restar el valor de la celda "total" de la fila seleccionada y lo hago asi
Código: C#
  1.  
  2. textBox19.Text = Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2[3,dataGridView2.CurrentCellAddress.Y].Value);
  3.  
  4.  

el problema es que
Código: C#
  1. dataGridView2.CurrentCellAddress.Y
  2.  
siempre me da 1 menos , por ejemplo si el indice es 2 , me arroja un 1 por lo tanto me resta la fila siguiente lo extraño es que probe el mismo codigo en un boton para que me mostrara los indices y en ese boton me los muestra correctamente.
aqui el codigo del boton mencionado
Código: C#
  1.  
  2. MessageBox.Show("equis = " + dataGridView2.CurrentCellAddress.X + "y = " + dataGridView2.CurrentCellAddress.Y);
  3.  
  4.  
probe tambien con
Código: C#
  1. DataGridView2.CurrentRow.Index
  2.  
y ocurre lo mismo
gracias de antemano

Altrox

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: es
    • Ver Perfil
Re: restar celda de datagridview
« Respuesta #1 en: Viernes 15 de Abril de 2011, 00:07 »
0
Hola buenas, prueba con esto

Código: C#
  1.  
  2. textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[3].Value)).ToString();
  3.  
  4.  

Con "dataGridView2.SelectedRows[0].Cells[3].Value" obtienes el valor de la celda 3 de la fila seleccionada.

Si tienes configurada la tabla que se pueda seleccionar una celda, deberias obtener el índice de esa fila y luego obtener el valor de la celda.
Código: C#
  1.  
  2. textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.Rows[dataGridView2.SelectedCells[0].RowIndex].Cells[3].Value)).ToString();
  3.  
  4.  

Luego si quieres obtener el valor de la celda desde los dos casos, prueba con esto
Código: C#
  1.  
  2.  if (dataGridView2.SelectedRows.Count == 0)
  3.             {
  4.                 textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.Rows[dataGridView2.SelectedCells[0].RowIndex].Cells[3].Value)).ToString();
  5.             }
  6.             else
  7.             {
  8.                 textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[3].Value)).ToString();
  9.             }
  10.  
  11.  

Bueno, ya contaras si funcionó. Saludos

kancerman

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: restar celda de datagridview
« Respuesta #2 en: Viernes 15 de Abril de 2011, 06:53 »
0
hola
gracias por responder

con la primera opcion que me diste me tira error de indice fuera de rango "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"

y con el segundo me pasa lo mismo que al principio toma la primera y la segunda fila con el mismo indice 0


gracias

EDIT: alguna idea? tadabia no logro solucionar el problema