CLR: .Net / Mono / Boo / Otros CLR > C#

 restar celda de datagridview

(1/1)

kancerman:
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# --- int sum = 0;            for (int i = 0; i < dataGridView2.RowCount; i++)            {                sum = sum + int.Parse(dataGridView2.Rows[i].Cells[3].Value.ToString());            }            textBox19.Text = sum.ToString();  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# --- textBox19.Text = Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2[3,dataGridView2.CurrentCellAddress.Y].Value);  
el problema es que
--- Código: C# ---dataGridView2.CurrentCellAddress.Y  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# --- MessageBox.Show("equis = " + dataGridView2.CurrentCellAddress.X + "y = " + dataGridView2.CurrentCellAddress.Y);  probe tambien con
--- Código: C# ---DataGridView2.CurrentRow.Index  y ocurre lo mismo
gracias de antemano

Altrox:
Hola buenas, prueba con esto


--- Código: C# --- textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[3].Value)).ToString();  
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# --- textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.Rows[dataGridView2.SelectedCells[0].RowIndex].Cells[3].Value)).ToString();  
Luego si quieres obtener el valor de la celda desde los dos casos, prueba con esto

--- Código: C# ---  if (dataGridView2.SelectedRows.Count == 0)            {                textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.Rows[dataGridView2.SelectedCells[0].RowIndex].Cells[3].Value)).ToString();            }            else            {                textBox19.Text = (Convert.ToInt32(textBox19.Text) - Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[3].Value)).ToString();            }  
Bueno, ya contaras si funcionó. Saludos

kancerman:
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

Navegación

[0] Índice de Mensajes

Ir a la versión completa