[ASP.NET/C#] DataBinder.Eval werkt niet

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb in een ASP.NET form een FormView met daarin een tabelletje met wat rijen. Iedere rij heeft een waarde en sommige waardes kunnen null zijn. Je voelt em al aankomen he :)

Zo'n rij moet dus niet naar de client uitgepoept worden als de waarde van het veld dat erin wordt weergegeven, null is. Dat probeer ik op de volgende manier (beetje ingekort):
ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
<% if (DataBinder.Eval(Container.DataItem, "pinUrl").ToString().Length > 0) { %>    
<tr>
  <td>
    <asp:HyperLink
      ID="lnkDetailHomepage"
      runat="server"
      NavigateUrl='<%# Eval("pinUrl") %>'
      Text='Hompage'
    />
  </td>
</tr>
<% } %>

Overal op internet vind je voorbeeldjes waarin het ook zo gedaan wordt, met DataBinder.Eval en Container.DataItem. Maar nu zegt ie dus dat Container niet bestaat. Ik vraag me in die voorbeeldjes sowieso af waar Container eigenlijk vandaan getoverd wordt, maargoed. Ik heb ook System.ComponentModel geimporteerd:
ASP.NET:
1
<%@ Import Namespace="System.ComponentModel" %>
Dan bestaat Container wel, maar DataItem niet.

Wat oh wat doe ik fout? :?

日本!🎌


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

en dit:
code:
1
<%# DataBinder.Eval(Container.DataItem, "pinURL") %>


maar het stuk <% %> in een <asp: /> kan ook wel eens het probleem zijn...

Of niet natuurlijk...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Met een hekje ervoor werkt prima, maar dat is niet wat ik wil natuurlijk... Kennelijk zorgt dat hekje er dus voor dat Container uit een andere context gehaald wordt, maar waar komt het dan vandaan?

En <% %> in een <asp: /> kan prima hoor. Niks mis mee.

日本!🎌


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

waar staat die tr in?? een repeater? datagrid?

Of niet natuurlijk...


Verwijderd

_Thanatos_ schreef op dinsdag 28 maart 2006 @ 11:59:
Ik heb in een ASP.NET form een FormView met daarin een tabelletje met wat rijen. Iedere rij heeft een waarde en sommige waardes kunnen null zijn. Je voelt em al aankomen he :)
Ik weet zo ff niet wat een Formview is, maar ik denk niet dat het wat uitmaakt ...
_Thanatos_ schreef op dinsdag 28 maart 2006 @ 11:59:

Zo'n rij moet dus niet naar de client uitgepoept worden als de waarde van het veld dat erin wordt weergegeven, null is. Dat probeer ik op de volgende manier (beetje ingekort):
ASP.NET:
1
<% if (DataBinder.Eval(Container.DataItem, "pinUrl").ToString().Length > 0) { %>
Volgens mij gaat een .ToString niet werken op een DBNull-waarde. Maar ik kan het ook mis hebben.

Het handigst lijkt mij om gewoon je datasource te wijzigen. Maakt eventueel een kopie van je datasource en verwijder die rows die je niet nodig hebt.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
ToString() geeft een lege string op DBNull.

Datasource wijzigen heeft geen zin, het is immers niet het hele record dat leeg is, maar alleen dat veldje. En die wil ik dan gewoon niet weergeven.

日本!🎌


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

gorgi_19

Kruimeltjes zijn weer op :9

Als het veldje niet bestaat (en dus Null is), waarom gebruik je dan ToString en niet Equals?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Maakt dat wat uit voor de DataBinder.Eval problematiek?

日本!🎌


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18:10

mulder

ik spuug op het trottoir

_Thanatos_ schreef op dinsdag 28 maart 2006 @ 12:59:
En <% %> in een <asp: /> kan prima hoor. Niks mis mee.
Dat is het wel als het een servercontrol is.

oogjes open, snaveltjes dicht


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Nou, <% %> misschien wel, maar <%# %> niet, gezien dat ervoor bedoeld is ;)

Maar, ik heb iets gevonden:
ASP.NET:
1
2
3
<% if (!Convert.IsDBNull(DataBinder.Eval(frmOrganisationsDetail.DataItem, "pinUrl"))) { %>
...
<% } %>
frmOrganisationsDetail is trouwens m'n FormView. En voor de mensen die FormView niet kennen: hij is erg neat, check MSDN maar :)

Alleen, nu rest nog de vraag: hoe netjes is dit? Ik heb gelezen dat <% %> at render-time wordt uitgevoerd en <%# %> at databind-time. Toch lijkt het wel te werken.

日本!🎌

Pagina: 1