EDGV – Brugeropsætning er en bitch!

Skrevet - Sunday, January 13th, 2008 kl. 3:30 | Kategori - * Kodning

Udgangspunktet var at jeg ville lave et alternativ til AutoGenerateColumns. Jeg valgte en løsning med en XML-parser, en XML-fil per type – og så danne XML-filen ud fra de public properties, der er på objektet. XML-filen skulle indeholde alt til brugeropsætningen og her løb jeg ind i vanskeligheder, da jeg i første omgang havde følgende med i XML-filen:

Problemet med denne fremgangsmåde var at eftersom jeg løb listen igennem, kan jeg ikke sætte display-indexet højere end indexet på den kolonne jeg er ved at indsætte – hvilket i praksis betød, at displayindex blev positionen i XML-filen, og ligeså med column-indexet. Nu havde jeg en række muligheder… jeg kunne løbe igennem listen i alt tre gange for at sætte index korrekt. Jeg kan ikke tåle at se den slags kode, så jeg besluttede at der måtte være en bedre metode.

XML er per definition hierakisk og proceduralt opbygget – og det virkede noget nemmere at udnytte dette, istedet for at se om jeg kunne lave om på det. Så jeg skrottede at have columnindexet i XML-filen (og så lade det være bestemt af propertiens index i listen – som kommer direkte fra rækkefølgen i XML-filen). Da jeg havde bøvlet lidt med det, blev jeg enig med mig selv om, at der egentligt slet ikke var nogen grund til at putte displayindexet ned i filen heller. Displayindexet giver mulighed for at have en anden rækkefølge grafisk – og beholde den originale rækkefølge i koden. Eftersom jeg kun arbejder med databundne kolonner og display-index derfor er irrelevant (hvis jeg anvender den i koden, bør jeg skydes ved daggry). I stedet valgte jeg kun at anvende displayindex til at danne en ny XML-fil, når brugeren med musen havde valgt at om-arrangere kolonnerne.

Så jeg endte med blot at lade rækkefølgen i XML-filen bestemme rækkefølgen i EDGV’et og så anvende listen til at holde styr på evt. ændringer (den kan rimelig nemt dumpes ned i en ny XML-fil, som så erstatter den gamle via XML-parseren).

Jeg kunne nu danne kolonne programmatisk og ændre kolonne-rækkefølgen dynamisk og persistere den. Stadigvæk var jeg ikke helt tilfreds. Brugeren havde ikke nogen mulighed for at ændre i, hvorvidt kolonnen skulle være skrivebeskyttet og ej heller synligheden. BLW sørgede for simpel sortering, men avanceret søgning var ikke muligt.

Feed | Trackback |

Post a Comment