2009-09-09 4 views
0

J'ai une page asp.net qui utilise un stringbuilder pour afficher une case à cocher côté client pour chaque enregistrement dans ma base de données.Idées pour remplir les cases à cocher de la base de données et conserver l'état pendant la publication

J'ai besoin de vérifier si la case à cocher doit être activée, en fonction d'un booléen dans la base de données et sur le postback maintenir l'état de toutes les cases à cocher.

Quelqu'un peut-il suggérer une bonne approche à ce sujet?

Répondre

1

L'utilisation d'une CheckBoxList avec ViewState activée couvre la deuxième partie. Définir la valeur de l'élément ListItem dans CheckBoxList à quelque chose comme le nom de la colonne binaire faciliterait l'utilisation de cbl.Items.FindByValue ("colName"). Checked = colValue et colValue = cbl.Items.FindByValue ("colName"). Vérifié pour charger et enregistrer l'état.

EDIT: Si vous devez utiliser l'approche StringBuilder

La façon rapide et sale est juste construire le balisage et définissez les valeurs comme on boucle le record en vous assurant que, sur le poste arrière, vous enregistrez le valeur à la base de données avant d'en lire les valeurs. Si vous mélangez l'ordre de sauvegarde/chargement, la base de données sera mise à jour mais l'utilisateur verra les anciennes valeurs lors de l'actualisation de la page, et si elles réapparaissent, elles écraseront les nouvelles valeurs avec l'ancienne.

Si vous avez besoin d'alléger la charge sur le db, alors après le retour [c.-à-d. if (Page.IsPostBack)] charge les valeurs de Request.Form ["chkBxName"] à la place.

Je ne pense pas qu'il y ait une façon très simple de le faire sans construire votre propre framework comme ViewState.

+0

Merci Jason. Pouvez-vous recommander des techniques si je n'utilise pas le contrôle checkboxlist et que je produis les cases à cocher en tant que html côté client? – 78lro

Questions connexes