Vérification de deux douzaines de valeurs, zones de texte par rapport à des colonnes de données, par algorithme

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

Question

D'accord, les gros cerveaux sont plus un défi qu'un impératif. Je suis un peu perplexe. Habituellement, j’ai juste besoin d’une aide dans la bonne direction, préparez donc vos bâtons d’aiguillon.

J'ai un tabcontrol couvert dans les zones de texte. Je souhaite effectuer une vérification du contenu de toutes les zones de texte lors de l'événement SelectedIndexChanged dans une vue en liste du même formulaire. Si l'une des zones de texte contient des données différentes d'une ligne DataTable - représentée par l'élément de liste -, je souhaite lui demander si l'utilisateur souhaite conserver les modifications qu'il vient d'apporter. Si rien n'a changé, je souhaite simplement modifier la sélection.

Alors, évidemment, je compare le contenu des zones de texte avec les colonnes associées dans la base de données.

Je pourrais simplement forcer la vérification et faire chaque vérification individuellement, une à la fois. Je préférerais trouver un moyen algorithmique astucieux de parcourir les zones de texte tabcontrol et de comparer les valeurs aux valeurs en colonnes.

Des suggestions?

EDIT: J'aime les "zones de texte astucieusement nommées". solution ci-dessous mieux, même si les deux sont bons. Si personne n’a une meilleure idée au cours des 14 prochains jours, la réponse de la zone de texte passe au vert.

Était-ce utile?

La solution

Donnez un nom astucieux aux zones de texte, car le nom de la colonne / de la ligne figure dans une partie du nom.

Groupe la zone de texte contrôle une boucle à travers eux. Pour chaque contrôle, obtenez le nom de la portion et utilisez-le comme référence à votre datatable. Vérifiez les valeurs.

Autres conseils

Si je vous comprends bien, vous voulez éviter de comparer chaque zone de texte à chaque modification, au lieu de simplement vérifier les zones de texte qui sont modifiées, en fonction de l'événement SelectedIndexChanged du contrôle ListView. Est-ce vrai?

Eh bien, DataRows et DataTables ont déjà des versions et des restaurations de ligne implémentées. Par conséquent, si vous liez les zones de texte à la ligne sous-jacente (en écrivant des événements à réécrire lors de la modification / perte du focus ou en utilisant un mécanisme automatisé tâche), puis vérifiez la propriété RowState sur SelectedIndexChanged. Si RowState n’est pas inchangé, demandez à l’utilisateur de sauvegarder. S'il enregistre, validez les modifications, sinon rejetez-les.

Ainsi, par exemple, vous souhaiteriez quelque chose comme ceci dans votre gestionnaire d'événements SelectedIndexChanged:

if (row.RowState == DataRowState.Modified) {
  // prompt for user input
  if (promptResult == PromptResult.Save) {
    row.AcceptChanges();
  }
  else {
    row.RejectChanges();
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top