[ASP.NET] BulletedList Hyperlink attributen

Pagina: 1
Acties:

  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Voor het menu van een webapplicatie wil ik gebruik maken van een bulletedList met DisplayMode=Hyperlink. Vervolgens vul ik deze lijst met menu-items uit een database. Deze menu-items kunnen interne links zijn, maar ook externe. Behalve een andere url, moeten de interne links gewoon Target="_self" krijgen, maar de externe "_blank". BulletedList heeft weliswaar de eigenschap Target, maar daarmee geef je alle items hetzelfde target mee.

Kortom: het lukt me niet om het Target-attribuut van afzonderlijke (hyperlink)-items te wijzigen, en ik vraag me af of het uberhaupt kan. Zoeken levert me niks op, behalve het Target-attribuut van de BulletedList.

Ik wil liever geen gebruik maken van de navigatie-controls omdat deze wat minder flexibel voor CSS zijn vanwege hun tabelstructuur. Ook genereer ik liever niet de benodigde HTML in een functie, ik wil graag opmaak en code geheel gescheiden houden.

Vraag ik het onmogelijke? Zie ik iets eenvoudigs over het hoofd?

Ik hoop dat dit verhaal een beetje duidelijk is, en dat iemand me een stap verder kan helpen. Alvast bedankt!

Jo3p

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:39

gorgi_19

Kruimeltjes zijn weer op :9

Als je het echt wil weten of er mogelijkheden zijn kan je met Reflecter de Render RenderBulletText handler van de BulletedList bekijken :)

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
            Case BulletedListDisplayMode.HyperLink
                  If (Not Me._cachedIsEnabled OrElse Not item.Enabled) Then
                        writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled")
                        Exit
                  End If
                  writer.AddAttribute(HtmlTextWriterAttribute.Href, MyBase.ResolveClientUrl(item.Value))
                  If Not String.IsNullOrEmpty(Me.Target) Then
                        writer.AddAttribute(HtmlTextWriterAttribute.Target, Me.Target)
                  End If
                  Exit

Niet echt dus :)

Je kan een custom BulletedList maken en RenderBulletText overriden :)

[ Voor 77% gewijzigd door gorgi_19 op 07-11-2006 19:32 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:39

TeeDee

CQB 241

Is er geen mogelijkheid om je eigen Bulletlist te bouwen (inheriten van de reeds bestaande?)
Voor een applicatie van ons heb ik er ook problemen mee gehad en vervolgens besloten om alles in een literal te gooien ;)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Wow, weer een nieuwe wereld... ;)

Klopt het dat je doelt op http://www.aisto.com/roeder/DotNet/ ? Moest ik maar eens uitzoeken allemaal. Klinkt wel erg nuttig!

Bedankt voor je antwoord, ik ga een alternatief zoeken.

  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Hoi TeeDee,

Dat is inderdaad een optie. Ik ben nog redelijk nieuw in de ASP.NET wereld, dus het kan in ieder geval geen kwaad om iets dergelijks te proberen.

Heb je toevallig een voorbeeld waar ik eens ter orientatie naar mag kijken?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:39

gorgi_19

Kruimeltjes zijn weer op :9

Jo3p789 schreef op dinsdag 07 november 2006 @ 19:33:
Wow, weer een nieuwe wereld... ;)

Klopt het dat je doelt op http://www.aisto.com/roeder/DotNet/ ? Moest ik maar eens uitzoeken allemaal. Klinkt wel erg nuttig!

Bedankt voor je antwoord, ik ga een alternatief zoeken.
Idd :) Erg makkelijk als je exact wilt weten wat .Net doet :) Maar inheriten is idd een vrij eenvoudige optie :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:39

gorgi_19

Kruimeltjes zijn weer op :9

Jo3p789 schreef op dinsdag 07 november 2006 @ 19:35:
Heb je toevallig een voorbeeld waar ik eens ter orientatie naar mag kijken?
Doe zelf eens een gok? :)

Hint:

Inherit van BulletedList. Override RenderBulletText . Kopieer de code uit Reflector en pas deze aan :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:39

TeeDee

CQB 241

Zal even kijken of ik hier VS.net heb draaien en even een sample bouwen.... (en anders is er wel te googlen op inheritance

Edit: Of wat gorgi_19 zegt ;)

[ Voor 11% gewijzigd door TeeDee op 07-11-2006 19:39 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Thank you!

Ik ga even eten, en dan snoeihard coden ;)

  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Ik kom een heel eind, maar de volgende foutmelding weet ik niet op te lossen:

'Ballerina_BulletedList' does not contain a definition for '_cachedIsEnabled'

Ik gebruik de volgende nieuwe klasse:

public class Ballerina_BulletedList : BulletedList

waar ik slechts één methode opnieuw definieer:

protected virtual void RenderBulletText(ListItem item, int index, HtmlTextWriter writer, Attribute target)

(Attribute target zal hier de link voorzien van de gewenste waarde)

Ook als ik de code van de methode rechtstreeks kopieer van de .NET code krijg ik deze foutmelding.

't is waarschijnlijk iets simpels, maar ik krijg 'm niet te pakken. Enig idee?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jo3p789 schreef op dinsdag 07 november 2006 @ 23:41:
'Ballerina_BulletedList' does not contain a definition for '_cachedIsEnabled'
Wat is daar niet duidelijk aan :?
Het is in PRG wel de bedoeling dat men zelf wat moeite onderneemt; we zijn hier niet om je aan je handje te houden all-the-way.

[ Voor 21% gewijzigd door RobIII op 07-11-2006 23:55 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Snap ik, en daar ben ik ook niet op uit.

Waar ik niet uitkom, is waarom een ervende klasse, identiek aan het origineel (op een methode na, waarvan de code wel identiek is) deze foutmelding geeft.

Daarnaast geeft Google slechts drie treffers (waarvan 3 stuks irrelevant) op "_cachedIsEnabled".

Kortom, ik ben hier behoorlijk nieuw in. Dergelijke problemen zijn voor jou gesneden koek, maar als je net leert koken is deeg soms lastig kneden.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 21:49
Als ik met reflector in de BulletedList bekijk, is _cachedIsEnabled private. Daar kan je dus niet bij vanuit een subclass. Hij heeft ook geen accessor, dus je moet de code uit reflector toch even iets aanpassen.

Roomba E5 te koop


  • Lukse
  • Registratie: Januari 2004
  • Laatst online: 12-04-2023
Jo3p789 schreef op dinsdag 07 november 2006 @ 23:41:
'Ballerina_BulletedList' does not contain a definition for '_cachedIsEnabled'
Is wsl gewoon een Boolean die je nog moet declareren.

  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Inderdaad moest deze variabele nog worden gedeclareerd (private, niet protected...) evenals een trosje methodes. Nu in ieder geval geen foutmeldingen meer. Hoewel ik nog wat problemen heb met dingen als "The name 'CultureInfo' does not exist in the current context" kan ik aan de slag om de BulletedList zo te maken als ik 'm hebben wil.

Allemaal bedankt voor jullie hulp, als ik het voor elkaar heb, zal ik de code hier posten.

Groet,

Jo3p

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:39

TeeDee

CQB 241

Wat heeft je cultureinfo met je bulletlist te maken :?

En code posten is altijd goed, zeker als je de oplossing hebt.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Jo3p789
  • Registratie: April 2006
  • Laatst online: 19-08-2024
Geen idee, maar die code staat in de originele methode:


C#:
1
writer.AddAttribute(HtmlTextWriterAttribute.Href, this.GetPostBackEventReference(index.ToString(CultureInfo.InvariantCulture)))
En hij klaagt zowel over GetPostBackEventReference als CultureInfo

Ik heb deze code er voor nu maar even uitge-'//'-d.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:39

gorgi_19

Kruimeltjes zijn weer op :9

http://www.google.nl/sear...q=MSDN2+CultureInfo&meta=

Zie je gelijk welke namespaces je moet importen en welke assemblies je eventueel nog moet referencen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1