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.
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