Verificando dos docenas de valores, cuadros de texto contra columnas de datos, algorítmicamente

StackOverflow https://stackoverflow.com/questions/606378

Pregunta

Bueno, cerebros grandes, aquí hay algo que es más un desafío que un requisito. Estoy un poco perplejo. Por lo general, solo necesito un golpe en la dirección correcta, así que prepara tus bastones de preparación.

Tengo un control de tabulación cubierto en cuadros de texto. Quiero realizar una verificación del contenido de todos los cuadros de texto durante el evento SelectedIndexChanged en una vista de lista en el mismo formulario. Si uno de los cuadros de texto tiene datos diferentes de una fila DataTable, representada por el elemento ListView, quiero preguntar si el usuario desea conservar el cambio que acaba de realizar. Si nada ha cambiado, quiero que solo cambie la selección.

Obviamente, estoy comparando el contenido de los cuadros de texto con las columnas asociadas en el datarow.

Podría simplemente forzar la comprobación y hacer cada comprobación individual una por una. Preferiría encontrar alguna forma algorítmica inteligente de recorrer los cuadros de texto de control de tabulación y comparar los valores con los valores de columnas.

¿Alguna sugerencia?

EDITAR: Me gustan los " cuadros de texto con nombre inteligente " Solución mejor por debajo, aunque ambas son buenas. Si nadie más tiene una idea mejor en los próximos 14 días, la respuesta del cuadro de texto se pondrá verde.

¿Fue útil?

Solución

Dé a los cuadros de texto un nombre inteligente, ya que en una parte del nombre está el nombre de la columna / fila.

Agrupar el cuadro de texto controla un bucle a través de ellos. Para cada control, obtenga el nombre (parte) y úselo como referencia a su datatable. Compruebe los valores.

Otros consejos

Si estoy entendiendo bien, usted quiere evitar comparar cada cuadro de texto en cada cambio, a favor de solo marcar los cuadros de texto que se modifican, controlados por el evento SelectedIndexChanged del control ListView. ¿Es eso correcto?

Bueno, las DataRows y las DataTables ya tienen implementadas versiones y retrocesos de filas, por lo que si vincula los cuadros de texto a la fila subyacente (ya sea escribiendo eventos para escribir sobre el enfoque cambiar / perder) o utilizando un mecanismo automatizado para lograr lo mismo tarea), luego verifique la propiedad RowState en SelectedIndexChanged. Si RowState no se modifica, solicite al usuario que guarde. Si guarda, confíe los cambios, de lo contrario, rechácelos.

Entonces, por ejemplo, querría algo como esto en su controlador de eventos SelectedIndexChanged:

if (row.RowState == DataRowState.Modified) {
  // prompt for user input
  if (promptResult == PromptResult.Save) {
    row.AcceptChanges();
  }
  else {
    row.RejectChanges();
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top