[C#] convert control naar webcontrol

Pagina: 1
Acties:

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Hi, ik heb de volgende code:

code:
1
2
3
4
5
6
7
8
if(ActCatRdr.HasRows)
  {
    while(ActCatRdr.Read())
    {
       System.Web.UI.WebControls.HyperLink tempHyperlinkobj = this.FindControl("hyperlink" + ActCatRdr["sCategoryName"].ToString());
        tempHyperlinkobj.NavigateUrl = "test";
    }
  }


Alleen ik krijg de foutmelding dat de control die je krijgt bij fincontrol niet geconverteerd kan worden naar een hyperlink webcontrol. Hoe pak ik dit aan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

De goede control gebruiken, in beginsel? :?

Je kan van een koe geen haas maken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Nee dat snap ik. Maar begrijp je enigszins waar ik naar toe wil? Ik wil uit een database de naam van een hyperlink webcontrol halen en die dan programmatisch aanroepen.. Hoe pak ik dit t beste aan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

UniCache2 schreef op 05 februari 2004 @ 16:25:
Nee dat snap ik. Maar begrijp je enigszins waar ik naar toe wil? Ik wil uit een database de naam van een hyperlink webcontrol halen en die dan programmatisch aanroepen.. Hoe pak ik dit t beste aan?
Doe eens:
Visual Basic .NET:
1
Throw new exception(Me.FindControl("hyperlink" + ActCatRdr("sCategoryName").GetType().ToString())

iig de type van de control naar voren halen.. Ik gok dat het wel eea verklaard.. :)
Syntax is niet helemaal correct, maar je krijgt het idee..

[ Voor 9% gewijzigd door gorgi_19 op 05-02-2004 18:07 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik denk dat het probleem is dat hij de control niet cast. FindControl heeft als return value een Control en die probeer je in een var van een HyperLink te stoppen. dus ongeveer zo
C#:
1
HyperLink myHyperLink = (HyperLink)FindControl( "Naampje" );

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

rwb schreef op 05 februari 2004 @ 18:15:
Ik denk dat het probleem is dat hij de control niet cast. FindControl heeft als return value een Control en die probeer je in een var van een HyperLink te stoppen. dus ongeveer zo
C#:
1
HyperLink myHyperLink = (HyperLink)FindControl( "Naampje" );
Moet je voor C# expliciet gaan casten?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
gorgi_19 schreef op 05 februari 2004 @ 18:16:
[...]

Moet je voor C# expliciet gaan casten?
Ja anders vindt de compiler het niet goed. Op zich ook niet zo heel vreemd vindt ik, op deze manier weet je als programeur wel beter waar je mee bezig bent. Het casten kan namelijk fout gaan. Als je niet op die manier wil casten kan je het ook op de volgende manier doen.

C#:
1
2
3
4
5
HyperLink myHyperLink = FindControl( "myHyperLink" ) as HyperLink;
if( myHyperLink != null )
{
    //doe iets
}

Dit gaat echter nog steeds verkeerd als FindControl null returnt. De as operator cast ieder geval een object en als het niet van dat type is dan returnt hij null dus eigenlijk een beetje als de volgende code
C#:
1
2
3
4
if( castObject is HyperLink )
    return (HyperLink)castObject;
else
    return null;

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1