[ nristic @ 16.01.2004. 23:09 ] @
U user kontroli imam jednu repeater kontrolu oblika
<asp:repeater .....>
<headertemplate>.....</>
<itemtemplate>
<asp:hyperlink>......</item...>
<footertemplate>...</footr...>
</asp:repeater>

U code behind klasi se spajam na bazu itd.
Problem nastaje da kada u svojstvo NavigateUrl želim upisati
link oblika index.asp?id=<%# Container.DataItem("id") %>...
dobijem grešku.

Probao sam svakakve verzije ali ni jedna ne valja.

Kad stavim samo ovo onda radi
NavigateUrl= '<%# Container.DataItem("id") %>'

Kako to rješiti.Stvarno mislim da sam sve već probao.

[ havramm @ 17.01.2004. 00:45 ] @
Probaj sa

Code:

NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "id")%>'


I meni se slicno desavalo i bas me zanima sta dobijes kada stavis

Code:

NavigateUrl='<%# Container.DataItem("id")%>'


po MSDN-u (Repeater.ItemTemplate Property) sam vidjao i nesto ovako

Code:

...
<ItemTemplate>
    <tr>
        <td> <%# Container.DataItem %> </td>
    </tr>
</ItemTemplate>
...


ovo poslednje nisam probao, ali bas bih voleo da znam razliku...

[Ovu poruku je menjao havramm dana 17.01.2004. u 16:37 GMT]
[ mmix @ 17.01.2004. 10:54 ] @
Citat:
havramm:
Code:

NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "id")%>'

po MSDN-u sam vidjao i nesto ovako

Code:

...
<ItemTemplate>
    <tr>
        <td> <%# Container.DataItem %> </td>
    </tr>
</ItemTemplate>
...


ovo poslednje nisam probao, ali bas bih voleo da znam razliku...


Elem, opet po MSDNu:
DataBinder.Eval uses reflection to parse and evaluate a data-binding expression against an object at run time. This method allows RAD designers, such as Visual Studio .NET, to easily generate and parse data-binding syntax. This method can also be used declaratively on a Web Forms page to simplify casting from one type to another.

Efektivno, po cenu performanse lišava te potrebe da usklađuješ tipove da bi izbegao runtime greške pri izvršavanju stranice. Simplified casting je npr.
Code:
<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>

gde se Price, vorovatno tipa DBType.Currency, konvertuje u string po locale-specific prikazu novčanih iznosa. Bez Eval-a ovaj izraz bi bio nešto nalik na (ovde nemojte da me držite za reč, nije probano, verovatno mu mešto fali :))
Code:
<%# ((System.Double)((((System.Data.DataRowView)(Container.DataItem))["Price"]))).ToString("{0:c}") %>


Zamislite da ovo morate da ukucate za svaki bindable element, bilo bi užasno, te su stoga izmislili DataBinder helper-a.

Nazad na prvobitno pitanje, pošto binding izraz ne mora da bude samo vrednost već može biti i izraz koji daje neku vrednost, samo stavi u hyperlink:

Code:

NavigateUrl='<%# "index.asp?id=" + DataBinder.Eval(Container.DataItem, "id")%>'


Pozdrav
[ nristic @ 17.01.2004. 12:45 ] @
Hvala čovječe.Produžio si mi živit.Inače ne radi mi sa + nego sa &.
Zar to ne bi trebalo biti isto. ??


Citat:
mmix:
Citat:
havramm:
Code:

NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "id")%>'

po MSDN-u sam vidjao i nesto ovako

Code:

...
<ItemTemplate>
    <tr>
        <td> <%# Container.DataItem %> </td>
    </tr>
</ItemTemplate>
...


ovo poslednje nisam probao, ali bas bih voleo da znam razliku...


Elem, opet po MSDNu:
DataBinder.Eval uses reflection to parse and evaluate a data-binding expression against an object at run time. This method allows RAD designers, such as Visual Studio .NET, to easily generate and parse data-binding syntax. This method can also be used declaratively on a Web Forms page to simplify casting from one type to another.

Efektivno, po cenu performanse lišava te potrebe da usklađuješ tipove da bi izbegao runtime greške pri izvršavanju stranice. Simplified casting je npr.
Code:
<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>

gde se Price, vorovatno tipa DBType.Currency, konvertuje u string po locale-specific prikazu novčanih iznosa. Bez Eval-a ovaj izraz bi bio nešto nalik na (ovde nemojte da me držite za reč, nije probano, verovatno mu mešto fali :))
Code:
<%# ((System.Double)((((System.Data.DataRowView)(Container.DataItem))["Price"]))).ToString("{0:c}") %>


Zamislite da ovo morate da ukucate za svaki bindable element, bilo bi užasno, te su stoga izmislili DataBinder helper-a.

Nazad na prvobitno pitanje, pošto binding izraz ne mora da bude samo vrednost već može biti i izraz koji daje neku vrednost, samo stavi u hyperlink:

Code:

NavigateUrl='<%# "index.asp?id=" + DataBinder.Eval(Container.DataItem, "id")%>'


Pozdrav

[ mmix @ 17.01.2004. 14:03 ] @
Citat:
nristic:
Hvala čovječe.Produžio si mi živit.Inače ne radi mi sa + nego sa &.
Zar to ne bi trebalo biti isto. ??


Nije, + se koristi kad ti je stranica u C#-u, a & kad je u vb.net-u. Ja sam (očigledno pogrešno) pretpostavio da radiš u C#-u.

Operator je isti samo se drugačije označava...

Pozdrav