Når der gemmes i databasen og checkbox 1, 2 og 4 var vinget af, ville værdien 11 altså blive gemt.
Jeg har brug for at kunne omdanne database værdien igen.
Jeg gør det helt low tech pt. Og jeg har på fornemmelsen at der sikkert findes en løsning som ikke kræver så mange linier kode.
Min løsning virker for mig, men jeg synes den er ret ufleksibel.
Nogle af jer der har andre tilgange til at løse denne udfordring?
public List<string> TargetGroupValues() { int targetgroups = 0; int.TryParse(this.Targetgroup, out targetgroups); List<string> outputvalues = new List<string>();
Hmm, jeg antager at du ikke går højere op end 32 ud fra hvad du viser der, og så ville jeg umiddelbart lave en Enum til det, det er vidst den hurtigste løsning, samt nemmest at kode op imod:
[Flags] public enum CheckedCheckBoxes { None = 0, Children = 1, Young = 2, Women = 4, Men = 8, Elderly = 16, Sick = 32 }
Så parser du din integer værdi til ovenstående enum, og på denne kan du så spørge ".HasFlag(CheckedCheckBoxes.Children)" f.eks. og så sætte et hak i den tilsvarende CheckBox.
using System; using System.Collections; using System.Collections.Generic;
namespace E { public class Program { [Flags] private enum e { A=1, B=2, C=4, D=8, E=16 } private static string[] sa = { "A", "B", "C", "D", "E" }; public static void Main(string[] args) { int v = 11; // BitArray BitArray ba = new BitArray(new int[] { v }); for(int i = 0; i < 32; i++) { if(ba[i]) { Console.WriteLine(sa[i]); // or add to List<string> } } // enum foreach(e ev in e.GetValues(typeof(e))) { if((v & (int)ev) != 0) { Console.WriteLine(ev); // or add to List<string> } } Console.ReadKey(); } } }
public List<string> TargetGroupValues() { int targetgroups = 0; int.TryParse(this.Targetgroup, out targetgroups); List<string> outputvalues = new List<string>();
foreach (eCases ev in eCases.GetValues(typeof(eCases))) { if (((1 << (Int32)ev) & targetgroups) != 0) outputvalues.Add(((eCases)ev).ToString()); }
Det er altid vigtigt at læse opgaven helt igennem, inden man svarer:
Og udgangspunktet er, at brugeren har en række checkboxe, som gemmes i en database i en enkelt int, hvor hver bit svarer til værdien af en checkbox.
Nu ønsker brugeren at få værdien af int'en splittet ud igen, så han kan vise de forskellige checkboxe igen. Men han har ikke fundet den bedste løsning til det.
Derfor vælger han en klodset løsning med en liste... Men jeg ser ingen steder at han efterspørger TEKST.
Hej alle. Undskyld min manglende respons her. Ja, lad os få lukket. Men nu læser jeg alle svar igennem og ved faktisk ikke rigtig hvem der skal have points.
Men smid et svar, i som vil have lidt points. Og så lukker vi denne tråd :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.