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
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić