2009-02-23 17 views
5

Używam ASP: LinkButton wewnątrz ItemTemplate wewnątrz TemplateField w GridView. Dla argumentu polecenia dla przycisku łącza Chcę przekazać identyfikator rzędzie od źródła danych, że GridView jest związany, więc robię coś takiego:ASP: LinkButton i Eval

<asp:LinkButton ID="viewLogButton" CommandName="viewLog" CommandArgument="<%#Eval("ID")%>" Text="View Log" runat="server"/> 

Niestety, wynikowy HTML jest to :

<asp:LinkButton ID="viewLogButton" CommandName="viewLog" CommandArgument="3" Text="View Log" runat="server"/> 

wydaje się, że jest parsowania eval() właściwie, ale to jakoś nie powodując jej do analizowania tag linkButton i po prostu zrzucić go jako dosłownego tekstu. Czy ktoś wie:

a) dlaczego tak się dzieje i, b) jakie jest dobre rozwiązanie tego problemu?

+0

"<% # Eval (" ID ")%>" wygląda na trudny do przeanalizowania. – bzlm

+0

Czy możesz opublikować kod. Wygląda na to, że Twój LinkButton może zostać przechwycony w ramach kontroli dosłownej. –

Odpowiedz

9

Chociaż nie może być przyczyną tego, że zwykle określają to tak:

CommandArgument='<%#Eval("ID")%>' 

proszę pisać resztę znaczników GridView, tak jak nie powinno się robić.

+1

Głupia mnie, myślę, że zrobili to cytaty. Dzięki. Zakładałem, że wszystkie szablony zostały przeanalizowane przed faktycznym znacznikiem asp: * - nie zgaduj. – sgibbons

+0

Po prostu miałem ten sam problem i miałem właśnie zadać to samo pytanie. – CJM

+0

co bym zrobił bez StackOverflow! –