2009-05-14 4 views
3

우선 asp.net n00b입니다. :)asp : asp를 사용하여 DataList 컨트롤 : LinkButton 내부 - 이상한 것

나는 ASP.NET을 배우려고하는 책에서 예제를 통해 작업하고 있는데, 이상한 것을 발견했습니다. 우선 책에 쓰여있는대로 타이핑하면 VS에서 오류가 발생합니다. 이것은이 책에 기록됩니다으로 코드 : 그래서, 나는 잠시 동안 그것을 뽑아 한

<asp:DataList ID="employeesList" runat="server"> 
    <ItemTemplate> 
     <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" /> 
     Name: <strong><%#Eval("Name") %></strong><br /> 
     Username: <strong><%#Eval("Username") %></strong><br /> 
     <asp:LinkButton ID="detailsButton" runat="server" Text=<%#"View more details about " + Eval("Name")%> 
      CommandName="MoreDetailsPlease" 
      CommandArgument=<%#Eval("EmployeeID")%> /> 
    </ItemTemplate> 
    <SeparatorTemplate> 
     <hr /> 
    </SeparatorTemplate> 
</asp:DataList> 

, 실제로 컴파일이 솔루션을 내놓았다 :

<asp:DataList ID="employeesList" runat="server" onitemcommand="employeesList_ItemCommand"> 
    <ItemTemplate> 
     <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" /> 
     Name: <strong><%#Eval("Name") %></strong><br /> 
     Username: <strong><%#Eval("Username") %></strong><br /> 
     <asp:LinkButton ID="detailsButton" runat="server" Text='View more details about <%# Eval("Name") %>' 
      CommandName="MoreDetailsPlease" CommandArgument='<%Eval("EmployeeID") %>' /> 
    </ItemTemplate> 
    <SeparatorTemplate> 
     <hr /> 
    </SeparatorTemplate> 
</asp:DataList> 

공지 사항이 I 또한 asp : DataList 태그에 OnItemCommand를 추가 했으므로 이제 예상대로 이벤트를 시작할 수 있습니다.

그러나 브라우저의 결과는 내가 기대 한 바가 아닙니다. 강력한 텍스트에 나와있는 이름과 사용자 이름은 잘 보여하지만,하는 LinkButton 내부의 세부적인 사항합니다 (직원 ID 필드)를 표시해야 Literal 컨트롤과 이름 필드는 페이지에 자신의 값을 표시하지 않습니다

not showing as expected http://lh6.ggpht.com/_x84bQLYH57A/SgxzygartcI/AAAAAAAAAIY/nhT-6RUJa6o/s144/EmployeeDirectory_notshowing.jpg 그것은 "직원 ID : 1"말을해야

와 "잭 Ruvalcaba에 대한보기 자세한 내용은"

그래서 나는 그 때 다른 컨트롤 내부에서 작동하지 않습니다 평가 후면 기능 추측을, 사람이 나를 도울 수 있습니까?

미리 감사드립니다.

답변

3

변경은하는 LinkButton는 같이

<asp:LinkButton ID="detailsButton" runat="server" 
    Text='<%# Eval("Name", "View more details about {0}") %>' 
    CommandName="MoreDetailsPlease" 
    CommandArgument='<%# Eval("EmployeeID") %>' /> 

미안 매개 변수의 순서를 혼동. 나는 나의 대답을 업데이트했다. 형식은 두 번째 매개 변수 여야합니다.

+0

이 솔루션을 사용하면 응용 프로그램이 충돌하여 DataBinding이 발생합니다. 'System.Data.Common.DataRecordInternal'에 '{0}에 대한 자세한 정보보기'라는 이름의 속성이 없습니다. 다시 보시겠습니까? 상당히 우아한 것처럼 보이기 때문에 이것이이 방법이되기를 바랍니다. :) – tplive

+0

CommandArgument ..에 누락 된 #을 찾아내는 데 필요한 반점 – tplive

+0

나는 당신의 업데이트 된 해결책에 IMHO보다 더 우아한 답변을하고 있습니다. 그러나 TheTXI는 흥미로운 것을 가지고 있기 때문에 나는 그를지지했다. 희망이 내가 제대로하고있어, 난 정말 새로운거야! 답장을 보내 주셔서 감사합니다. – tplive

1

당신은 내가 여기에 무시 무시하게 유사한 어제와 관련된 일에 게시 또 다른 질문 볼 수 있습니다

Need help with Eval inside DataList

내가 Canavar 실제로 그러나, 정답을 준 믿는다을.

+0

링크가 흥미 롭습니다. Eval에서 반환 한 값이 Object 였지만이 솔루션을 적용했을 때 Text = '<% # ""Eval ("Name")에 대한 자세한 정보보기 ToString() + ""%>'그것은 매력처럼 작동합니다! – tplive

+0

tplive : 도울 수 있다면 나에게 투표 해 달라. (어쩌면 내 원래 질문도) – TheTXI

관련 문제