onsdag 10 oktober 2007

Dynamiskt laddade kontroller

Satt med ett litet problem jag skulle lösa idag. Tog en stund innan jag kopplade grepp om det.
Ville ladda en .net kontroll dynamiskt - skjuta in lite data från en databas och skapa strängen (body) till ett html mail. Hade som vanligt allt up and running på två röda men innehållet från databasen dök aldrig upp i mailet. Allt annat däremot funkade som det skall.
Det visar sig att när man laddar en kontroll dynamiskt så körs inte Page_Init, Page_Load etc utan man får casta typen och köra en egen metod.

En kodsnutt på löst problem:

MyControlClass ctrl = ((MyControlClass)LoadControl("~/controls/mycontrol.ascx"));
StringWriter sw = new StringWriter();
Html32TextWriter hw = new Html32TextWriter(sw);
// Casta kontrollen till korrekt typ innan man kallar på metoden
((MyControlClass)ctrl).RenderContent();
ctrl.RenderControl(hw);
string Body = sw.ToString();


Gott när man löser smågrejer sådär mitt på dan =)

1 kommentar:

Jenny. sa...

Öh...absolut. Do it again!...eller...What???