Designer hjælp til encustom templated databound control

Tags:    asp.net

Hej

Som garvet PHP mand har jeg nu kastet mig ud i den store verden af .Net og er derfor selvfølgelig også begyndt på ASP.Net.

Jeg gik som noget at det første igang med at prøve at lave et forum for at prøve mine evner af og lære sproget og frameworket. Det gik også glimrende og GridView kontrollen er bare herlig til at vise en oversigt over alle tråde der er lavet osv.

Men problemet kom da jeg skulle til at vise alle tråde i et indlæg. Den simpleste måde er jo selvfølgelig bare at droppe en repeater eller datalist på formen og så oprette en datasource og redigere lidt i templaten. Men det dur bare ikke hvis man gerne vil være i stand til at bruge paging, låse det første element på datalisten osv.

Så jeg gik igang med at lave en bedre datalist/repeater, og det går egentlig også meget godt, jeg kan sagtens få lavet noget kode til min kontrol. Men jeg har et par problemer:

- Når jeg er inde og redigere i templates så får jeg ikke "Edit databindings..." smart-tagget frem hvis jeg f.eks. indsætter en label kontrol på min form?
- Jeg har INGEN idé om hvordan jeg skal gøre sådan at man kan trykke Refresh schema på min kontrols smart-tag, at den så loader nogle standard elementer ind (lige som den almindelige datalist).
- Jeg er ikke helt sikker på om min måde at databinde templatesne på er rigtig.

Så jeg søger selvfølgelig svar på disse spørgsmål og derudover vil en håndfuld links til udvikling af templated og databound (og gerne begge dele kombineret) være ekstremt hjælpsomme.

Min, lidt lange, kildekode ser ud som følger (der mangler stadig meget funktionalitet, men nu vil jeg lige få fod på disse ting først, så jeg ikke ender med at skulle redesigne alt for meget).


EXDataList.cs
Fold kodeboks ind/udKode 


EXDataListItem.cs
Fold kodeboks ind/udKode 


EXDataListDesigner.cs
Fold kodeboks ind/udKode 


EXDataListItemTemplate.cs (ved ikke om sådan en klasse overhovedet skal bruges?)
Fold kodeboks ind/udKode 


Som det kan ses mangler der stadig at blive skrevet en masse kode rundt omkring, og en masse properties bliver ikke engang brugt til noget som helst, dette laver bare en basis repeater der gør brug af databinding og templates, den kan ikke noget specielt (endnu).

Men jeg håber at der er nogle åbne sjæle derude der enten vil se hvad jeg mangler i min kode, eller smide en masse dejlige links i hovedet på mig! :D



Indlæg senest redigeret d. 14.04.2006 00:11 af Bruger #714
4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Ok nu fik jeg løst problemet med at kunne databinde via designeren i mine templates. Problemet er løst i EXDataListDesigner.cs.

Når man tilføjer sine TemplateDefinitions til TemplateGroupsne så skal man lige sætte SupportsDataBindings til true.



Nå, så fik jeg løst det andet problem også, så mangler jeg egentlig bare at vide om jeg overhovedet databinder korrekt.

Løsningen på det andet problem er ikke så ligetil, men jeg kan anbefale at bruge reflector og kigge lidt på kildekoden til FormViewDesigneren (findes i System.Design.dll assemblien og under System.Web.UI.Design.WebControls namespacet). Den har en metode der hedder OnSchemaRefreshed hvor det hele starter.



Nå jeg lukker tråden...







t