Toon posts:

[ASP.NET] Link weergave probleem in repeater

Pagina: 1
Acties:
  • 40 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik heb dus hetvolgende probleem voor:
Ik heb een link in mijn repeater gestoken die gelinkt is aan data in een database.
Nu is het probleem dat het veld in de database niet altijd is ingevuld. Dan mag die link ook niet worden weergegeven in de repeater.

Simpel gezegd bedoel ik dat er een link staat naar een website in een repeater, maar soms is er geen link waardoor die ook onzichtbaar moet worden.

Deze code heb ik al:

ASP.NET:
1
<asp:HyperLink ID="hlWebsite" Runat="server" NavigateUrl='<%#Databinder.Eval(Container.DataItem,"Website")%>' Target="_blank">Website</asp:HyperLink>


Daar moet dus nog een if...then rondkomen veronderstel ik, maar dit lukt me dus niet.
Iemand die me kan helpen?
tnx

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Kan je niet met de Visible property aan de gang gaan? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 16 augustus 2004 @ 14:19:
Kan je niet met de Visible property aan de gang gaan? :)
Dat heb ik reeds geprobeerd, maar ik moet het tussen mijn html code steken en daardoor lukt het niet echt goed.

dit heb ik geprobeerd, maar is niet gelukt
ASP.NET:
1
2
3
4
5
<% if #Databinder.Eval(Container.DataItem,"Website")="" then
hlWebsite.visible="false"
else
hlWebsite.visible="true"
end if %>

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:01
Heeft zo'n repeater geen OnItemDataBound event oid waarin je al dergelijke gein kwijt kunt?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 16 augustus 2004 @ 14:24:
Heeft zo'n repeater geen OnItemDataBound event oid waarin je al dergelijke gein kwijt kunt?
nog nooit van gehoord, maar ik zal het even bekijken

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 16 augustus 2004 @ 14:24:
Heeft zo'n repeater geen OnItemDataBound event oid waarin je al dergelijke gein kwijt kunt?
Zou op zich ook kunnen, maar
Visual Basic .NET:
1
<asp:HyperLink Visible='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "Website")))).Length() > 0 %>' etc.

oid zou toch ook moeten werken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

If statements kunnen niet in een databind-blok (<%# %> dus). Je kunt wel functies aanroepen, wat gorgi_19 hierboven neerzet is een goede mogelijkheid maar je kunt ook een externe functie aanroepen die met de invoer van de databinder al dan niet een link returned.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script runat="server">

    Function MaakLink(ByVal Url As String) As String

        If Url.Length() > 0 Then
            Return "<a href=""" & Url & """>Klik om de site te bezoeken</a>"
        End If

    End Function

</script>

<asp:Repeater runat="server">
    <ItemTemplate>
        <%# MaakLink(DataBinder.Eval(Container.DataItem, "Website")) %>
    </ItemTemplate>
</asp:Repeater>

[ Voor 24% gewijzigd door Not Pingu op 16-08-2004 14:33 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
gorgi_19 schreef op 16 augustus 2004 @ 14:27:
[...]

Zou op zich ook kunnen, maar
Visual Basic .NET:
1
<asp:HyperLink Visible='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "Website")))).Length() > 0 %>' etc.

oid zou toch ook moeten werken?
Kunt u mss wat uitleg geven bij die code want ik begrijp het niet goed 8)7

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Gunp01nt schreef op 16 augustus 2004 @ 14:32:
If statements kunnen niet in een databind-blok (<%# %> dus). Je kunt wel functies aanroepen, wat gorgi_19 hierboven neerzet is een goede mogelijkheid maar je kunt ook een externe functie aanroepen die met de invoer van de databinder al dan niet een link returned.
Enige nadeel van jouw methodiek is dat je een string teruggeeft en geen hyperlink control meer hebt :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Gunp01nt schreef op 16 augustus 2004 @ 14:32:
If statements kunnen niet in een databind-blok (<%# %> dus). Je kunt wel functies aanroepen, wat gorgi_19 hierboven neerzet is een goede mogelijkheid maar je kunt ook een externe functie aanroepen die met de invoer van de databinder al dan niet een link returned.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script runat="server">

    Function MaakLink(ByVal Url As String) As String

        If Url.Length() > 0 Then
            Return "<a href=""" & Url & """>Klik om de site te bezoeken</a>"
        End If

    End Function

</script>

<asp:Repeater runat="server">
    <ItemTemplate>
        <%# MaakLink(DataBinder.Eval(Container.DataItem, "Website")) %>
    </ItemTemplate>
</asp:Repeater>
Dit versta ik dan weer wel, maar waarom diennen die 3 " voor en na de & ?

Als ik dit trouwens gebruik krijg ik de volgende fout:
De conversie van het type DBNull naar het type String is niet geldig.
Fout in bron:
Regel 51: <%# MaakLink(DataBinder.Eval(Container.DataItem, "Website")) %>

Tis precies moeilijker dan dat ik dacht

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Dan controleer je eerst op System.DBNull.Value of zet je IsNull(veldnaam,'') in je SQL Statement.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 16 augustus 2004 @ 14:48:
Dan controleer je eerst op System.DBNull.Value of zet je IsNull(veldnaam,'') in je SQL Statement.
En waar precies in mijn sql statement moet ik die IsNull(Website,'') erbij zetten? 8)7
ASP.NET:
1
strSql = "SELECT * FROM tblZoekertjes ORDER BY ZoekertjeId DESC"

sorry voor al mijn vragen, maar ik ben hier niet zo heel goed in

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

gorgi_19 schreef op 16 augustus 2004 @ 14:44:
[...]

Enige nadeel van jouw methodiek is dat je een string teruggeeft en geen hyperlink control meer hebt :)
Maar als ik het goed begrijp is dat ook helemaal niet nodig, het enige wat TS wil is een hyperlink in beeld.
En null values leveren idd nu nog een probleem op, je zou ervan kunnen maken:

Visual Basic .NET:
1
2
3
4
Function MaakLink(Optional ByVal Url As String = "") As String

    If Url <> "" Then
        Return link blablabla


die 3x " achter elkaar is om een letterlijke quote in de string te zetten. "" wordt door VB.Net vertaald naar een " als resultaat, die derde quote is dan om de string te onderbreken.
Dus "" is eigenlijk een vervanging van Chr(34).

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Gunp01nt schreef op 16 augustus 2004 @ 15:04:
[...]


Maar als ik het goed begrijp is dat ook helemaal niet nodig, het enige wat TS wil is een hyperlink in beeld.
En null values leveren idd nu nog een probleem op, je zou ervan kunnen maken:

Visual Basic .NET:
1
2
3
4
Function MaakLink(Optional ByVal Url As String = "") As String

    If Url <> "" Then
        Return link blablabla


die 3x " achter elkaar is om een letterlijke quote in de string te zetten. "" wordt door VB.Net vertaald naar een " als resultaat, die derde quote is dan om de string te onderbreken.
Dus "" is eigenlijk een vervanging van Chr(34).
achzo voor die "
maar met die aangepaste code krijg ik nog steeds die foutmelding,
het is precies of da program doet derom ;(

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 gaat het topic uiteindelijk maar dicht doen...

In principe zijn we nu op het niveau aangekomen van basisstof. Escapen van characters in VB.Net, IsNull-functie gebruiken in SQL, controleren op System.DBNull.Value; allemaal zaken welke in tutorials naar voren komen. Verder blijk je niet echt thuis te zijn in de materie; geen probleem, maar het is dan beter om een aantal tutorials door te nemen. :)

Zie verder [rml]VeNeReA in "[ ASP.NET] Link weergave probleem in repe..."[/rml]; hieruit maak ik op dat je een relatie verwacht tussen het escapen en de foutmelding. Doordat je deze denkt te kunnen leggen, heb je dus geen idee wat de foutmelding werkelijk betekent.

Verder neem je niet echt de moeite om zelf de dingen uit te zoeken. Je krijgt termen aangeboden (IsNull icm SQL), richtingen van code voor je oplossing ([rml]VeNeReA in "[ ASP.NET] Link weergave probleem in repe..."[/rml] ), terwijl het enige wat je doet is verder vragen en niet zelf verder onderzoeken. :)

In Programming & Webscripting verwachten we ook dat je zelf onderzoek doet en niet dat we je alles volledig gaan uitleggen; iets waar het nu steeds meer op begint te lijken.
Je hebt nu een opzet gekregen, je hebt termen gekregen. Hiermee moet je het kunnen oplossen. :) Succes verder :)

[ Voor 6% gewijzigd door gorgi_19 op 16-08-2004 15:15 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.