[asp.net/c#] hoe constructor of props van usercontrol vullen

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 19-05 08:57
Ik heb een usercontrol gemaakt (myUsercontrol.ascx) en die heeft een 2 tal properties die ook via de constructor mee kunnen worden gegeven (liever via de c'tor dan via de properties. De c'tor heeft 3 overloads

Nu krijg ik wel via
code:
1
PlaceHolder.Controls.Add(Page.LoadControl("~/myUsercontrol.ascx"));

de control in de placeholder maar no way dat ik begrijp of kan vinden hoe ik die parameters moet doorgeven

heeft iemand hier ervaring mee ?

ik dacht eerst aan:
code:
1
2
myUsercontrol myUc = new myUsercontrol("sadfsdasdf",true);
PlaceHolder.Controls.Add(myUc);

Maar dan wordt de usercontrol niet gerenderd :?

[ Voor 4% gewijzigd door shades op 07-07-2004 14:31 ]

https://k1600gt.nl


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Je kunt toch gewoon via
<tag:myControl myproperty1="value" myproperty2="value"... />

de properties vullen in je aspx page?

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • shades
  • Registratie: September 2001
  • Laatst online: 19-05 08:57
Het is vooraf niet bekend welke usercontrols wel en niet getoond worden en ook niet in welke volgorde dat gebeurd.. Bovendien kunnen sommige controls meer dan 1 maal aanwezig zijn.

[ Voor 24% gewijzigd door shades op 07-07-2004 15:28 ]

https://k1600gt.nl


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Ik gebruik de volgende code voor een UserControl genaamd MessageViewer die ik gebruik om meldingen op een webpagina te tonen:

code:
1
2
3
MessageViewer messageViewer = (MessageViewer)LoadControl("MessageViewer.ascx");
messageViewer.ShowMessage("Dit is een foutmelding", MessageViewer.MessageType.Error);
myPanel.Controls.Add(messageViewer);


Op dezelfde manier als dat ik de ShowMessage methode aanroep, zou ik ook properties kunnen aanroepen.

  • shades
  • Registratie: September 2001
  • Laatst online: 19-05 08:57
Jabbah schreef op 07 juli 2004 @ 16:20:
Ik gebruik de volgende code voor een UserControl genaamd MessageViewer die ik gebruik om meldingen op een webpagina te tonen:

code:
1
2
3
MessageViewer messageViewer = (MessageViewer)LoadControl("MessageViewer.ascx");
messageViewer.ShowMessage("Dit is een foutmelding", MessageViewer.MessageType.Error);
myPanel.Controls.Add(messageViewer);


Op dezelfde manier als dat ik de ShowMessage methode aanroep, zou ik ook properties kunnen aanroepen.
Ik heb het geprobeerd en het werkt inderdaad goed.. Ik heb momenteel dus de volgende 2 properties per usercontrol (stuk of wat):

code:
1
2
public string Text [...]
public bool IsPrintOutput [...]


Is het mogelijk om dus via een lus alle controls die nodig zijn te adden zonder gebruik te maken van switch ?
(pseudo code - zie commentaar in de code):
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Door loop dataset.Table[bla]
{
   string strUC = haal type op;
   string strTekst = haal tekst op;
   bool blnIsPrintOutput = haal wel/niet printen flag op;

   object UC = (strUC)LoadControl(strUC + ".ascx");
   /*
      Kan bovenstaande ? dacht zelf dat je iets kon doen met typeof ofzo maar mijn
      kennis van C# gaat daarvoor niet ver genoeg...
   */
   UC.Text = strTekst;
   UC.IsPrintOutput = blnIsPrintOutput;
   PlaceHolder.Controls.Add(UC)
}

https://k1600gt.nl


Verwijderd

Je moet idd iets met typeof doen. Het is wel mogelijk.

Misschien wat je veel meer zou helpen is als je een interface of baseclass maakt waarvan je jouw control's afleidt. Dan kan je namelijk in je loop je ascx die je wilt toevoegen casten naar je basecontrol of je interface en via die manier de properties zetten.

Op zich gaat mijn voorkeur uit naar een baseclass omdat je dan minder tikwerk hoeft te doen om je properties te kunnen setten en getten

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Op zich zou het moeten kunnen, hoewel ik me wel afvraag waarom je naar object terugcast? En inderdaad, als dit vaak voorkomt, een eigen abstract class maken, en hiervan erven ipv usercontrol. Wel moet deze class dan op zijn beurt usercontrol weer overerven, anders krijg je vreemde effecten :)

[ Voor 54% gewijzigd door gorgi_19 op 08-07-2004 00:02 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • shades
  • Registratie: September 2001
  • Laatst online: 19-05 08:57
gorgi_19 schreef op 08 juli 2004 @ 00:01:
Op zich zou het moeten kunnen, hoewel ik me wel afvraag waarom je naar object terugcast? En inderdaad, als dit vaak voorkomt, een eigen abstract class maken, en hiervan erven ipv usercontrol. Wel moet deze class dan op zijn beurt usercontrol weer overerven, anders krijg je vreemde effecten :)
Met "object UC" bedoel ik dus eigenlijk "strUC UC" waarbij strUC dus op e.o.a. manier moet worden herkend dat daarin de naam van een type staat, dus ip strUC staat er dan myUsercontrol of myOtherUsercontrol ofzo..

Ik ga gelijk even kijken wat een abstract class precies inhoud, dan begrijp ik je antwoord misschien beter (nog niet zoveel ervaring met c# en kennis van oo, maar dat komt wel)

https://k1600gt.nl

Pagina: 1