¿Cómo saltar la fila cuando no hay un desencadenador de edición en una celda?
Estoy creando una aplicación simple con datagridview
. Los usuarios tienen la capacidad de actualizar varias filas.
No tengo problemas al guardar múltiples filas en una ejecución.
Pero mi problema es cómo saltar la fila cuando no hay un desencadenador de edición en una celda?
Porque estoy usando el bucle For
para actualizar varias filas.
int rows = 0;
for (int i = 0; i < frm1.dgViewTask.Rows.Count; i++)
{
if (frm1.btnMLA.Enabled == false)
{
objNPTBEL.reportingDate = reportingDate.ToString();
objNPTBEL.startDate = startDate.ToString();
objNPTBEL.endDate = endDate.ToString();
}
else
{
objNPTBEL.reportingDate = reportingDate1.ToString();
objNPTBEL.startDate = estStartDate.ToString();
objNPTBEL.endDate = estEndDate.ToString();
}
objNPTBEL.id = Convert.ToInt32(frm1.dgViewTask.Rows[i].Cells[0].Value);
objNPTBEL.taskname = frm1.dgViewTask.Rows[i].Cells[4].Value.ToString();
objNPTBEL.remarks = frm1.dgViewTask.Rows[i].Cells[5].Value.ToString();
rows = objNPTBLL.NonProcessingTime(9, objNPTBEL.id, objNPTBEL.workdayID, objNPTBEL.taskname, objNPTBEL.reportingDate, objNPTBEL.remarks, objNPTBEL.startDate, objNPTBEL.endDate, null, null, objNPTBEL.eststartDate, objNPTBEL.estendDate, null, objNPTBEL.estreportingDate, null, null, objNPTBEL.rationale);
}
si (filas > 0)
{
MessageBox.Show("Atualizado com sucesso.", "DigiTrack", MessageBoxButtons.OK, MessageBoxIcon.Information);
frm1.RefreshdgViewTask();
frm1.clearVariable();
this.Hide();
}
Estoy pensando si tengo 500+ filas, se repetirá 500+. ¿Hay alguna manera de saltar la celda no modificada?
davy.ai
Para saltar la celda que no ha sido modificada, puede utilizar el evento
DataGridView.CellValueChanged
para detectar si se ha actualizado alguna celda en el controlDataGridView
. Una vez que se ha actualizado una celda, puede establecer una bandera para indicar que la fila necesita ser actualizada. Luego, en elFor Loop
, puede comprobar si se ha establecido la bandera para la fila actual y sólo actualizar la fila si la bandera es verdadera.Aquí hay un ejemplo:
En este ejemplo, creamos un array de valores
bool
para rastrear si una fila necesita ser actualizada o no. Cuando se dispara el eventoCellValueChanged
, establecemos la bandera para la fila entrue
. Luego, en elFor Loop
, comprobamos si la bandera estrue
para la fila actual y sólo actualizamos la fila si ha cambiado. Esto reduce el número de filas que necesitan ser actualizadas y aumenta la eficiencia.