int m = 0; // Apunta a la fila actual
int n = dgView.Rows.Count - 1; // cantidad de filas en el DataGridView
int k;
string estaFila, unaFila;int k;
while (m < n)
{
k = 1;
estaFila = String.Empty;
// Relleno la cadena con los datos de toda la fila
for (int i = 0; i < dgView.Columns.Count; i++)
estaFila = String.Concat(estaFila, dgView.Rows[m].Cells[i].Value.ToString());
while (k < n)
{
unaFila = String.Empty; // Fila a comparar
for (int i = 0; i < dgView.Columns.Count; i++)
unaFila = String.Concat(unaFila, dgView.Rows[k].Cells[i].Value.ToString());
if (String.Compare(estaFila, unaFila) == 0 && k != m)
{
dgView.Rows.RemoveAt(k); // Si son iguales remuevo unaFila solamente
n--; // Tamaño actual del DataGridView, al remover disminuye en uno
}
k++;
}
m++;
}
7 comentarios:
Hola, he probado tu código y si me funciona pero lo que yo quiero hacer es que me sume las filas que sean iguales digamos que las "Agrupe", tendrás alguna idea?
Espero tu respuesta, gracias.
Lenguaje: c#
Uso de XMl
hOLA ME GUSTARIA HACER LO MISMO PERO QUE ME BORRE TODAS LAS CELDAS Y SOLO ME DEJE LAS CELDAS REPETIDAS
Espero que los sirva
https://www.facebook.com/cuscocomputerclub
para las personas que les interesa este código... lo que hace es que suma los nuemros de boletas iguales sus montos en uno solo...
la cosa es asi... llenamos el datagridview con los datos que vendimos y luego leemos ese datagridview para para ver si existen mismos numeros de boleta.
aplicamos For para el DGV
luego decimos si la Posición 0 = Posición 1, entonces que me sume el monto de la Posición 0 y Posición 1 en el monto de la Posición 0, luego le decimos que se elimine la Posición 1, y al final le decimos que el "i" del FOR se disminuya en -1
caso contarario q no haga nada.....
al final que la Cantidad de DGV se actualiza igualando a la cantidad de filas del DGV, ya que eliminamos uno si es igual, y caso contrario tambien se actauliza
ahh. este procedimiento pueden llamr de cualquier parte, ya se al aplastar un boton, etc
El codigo!!!!
private void ResumenDeBoletas()
{
int cantidad = dgvreporte.Rows.Count;
for (int i = 0; i < cantidad - 2; i++)
{
string Nro = dgvreporte[0, i].Value.ToString();
if (Nro == dgvreporte[0, i + 1].Value.ToString())
{
dgvreporte[1, i].Value = Convert.ToDouble(dgvreporte[1, i].Value) + Convert.ToDouble(dgvreporte[1, i + 1].Value);
dgvreporte.Rows.RemoveAt(i + 1);
i = i - 1;
}
else
{
}
cantidad = dgvreporte.Rows.Count;
}
}
Gracias, si funciona pero siempre falta por eliminar la ultima fila, me podrías ayudar por favor?.
private void ResumenDeBoletasreversa()
{
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
foreach (DataGridViewRow drr in dataGridView1.Rows)
{
if (dr.Index != drr.Index)
{
if (dataGridView1.Rows[dr.Index].Cells["Valor comparar"].Value.ToString() == dataGridView1.Rows[drr.Index].Cells["Valor comparar"].Value.ToString())
{
if (dataGridView1.Rows[dr.Index].Cells["ValorSumar"].Value != null)
{
if (dataGridView1.Rows[dr.Index].Cells["ValorSumar"].Value.ToString() != "")
{
dataGridView1["ValorSumar", dr.Index].Value = Convert.ToDouble(dataGridView1["ValorSumar", dr.Index].Value) + Convert.ToDouble(dataGridView1["ValorSumar", drr.Index].Value);
dataGridView1.Rows.RemoveAt(drr.Index);
}
}
else
{
}
}
}
}
}
}
"ValorSumar" se puede remplazar por numero de la columan igual con "Valor comparar"
Gracias, sigo tu blog a dia de hoy !
Muchas gracias!! Llevaba toda la tarde dándome cabezazos
Publicar un comentario