asp.net
  • listview
  • 2012-04-09 3 views 0 likes 
    0
    <asp:ListView ID="ListView1" runat="server" DataKeyNames="orderID" DataSourceID="SqlDataSource1"> 
    <ItemTemplate> 
    <tr> 
    <td> 
        <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false" /> 
    </td> 
    <% 
        Label s = (Label)ListView1.FindControl("statusLabel"); 
        string status = s.Text; 
        if (status == "0") { //code here } 
    %> 
    </tr> 
    </ItemTemplate> 
    </asp:ListView> 
    

    어떻게하면 프론트 페이지에서 statusLabel 텍스트를 얻을 수 있습니까? 뒤에 코드하지. 모든 데이터 행은 상태가 서로 다르기 때문에 상태를 기반으로 버튼을 표시하고 싶습니다. 어떤 해결책으로도이 작업을 수행 할 수 있습니까?aspx 페이지에서 ListView에서 ASP 코드로 값을 가져 오는 방법

    +0

    왜 코드 뒤에 코드를 작성하지 않으셨습니까? – Pankaj

    +0

    설정된 수의 버튼이 있습니까? 질문에 예제를 추가 할 수 있습니까? –

    +0

    왜냐하면 모든 행에 다른 버튼을 표시하고 싶기 때문입니다. –

    답변

    1

    그것은 보이지 않는를; 레이블이 설정되어있는 값을 가져와야합니다. Eval 함수를 사용하면됩니다.

    버튼 세트 번호가있는 경우, 당신은 상태에 따라 가시성 전환 할 수 있습니다 : 상황이보다 더 복잡한 경우

    <ItemTemplate> 
        <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false" /> 
        <asp:Button ID="Button1" runat="server" Text="Test" Visible='<%# Eval("status") == "Open" ? true : false %>' /> 
        <asp:Button ID="Button2" runat="server" Text="Test Again" Visible='<%# Eval("status") == "Closed" ? true : false %>' /> 
    </ItemTemplate> 
    

    , 당신이 상태로 그룹에 버튼을 PlaceHolder 컨트롤을 사용할 수 있습니다 :

    <ItemTemplate> 
        <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false" /> 
        <asp:PlaceHolder ID="plcOpenStatus" runat="server" Visible='<%# Eval("status") == "Open" ? true : false %>'> 
         <!-- buttons for open status --> 
        </asp:PlaceHolder> 
        <asp:PlaceHolder ID="plcClosedStatus" runat="server" Visible='<%# Eval("status") == "Closed" ? true : false %>'> 
         <!-- buttons for closed status --> 
        </asp:PlaceHolder> 
    </ItemTemplate>  
    
    +0

    멋진 사람! 매력처럼 작동! 정말 고맙습니다! –

    +0

    대단히 반갑습니다. 다행 :) –

    0

    비즈니스 로직을 인라인하는 것은 대개 잘못된 아이디어입니다. 그러나 귀하의 경우에는 statusLabel 컨트롤 자체에 액세스 할 필요가 없습니다. if 문에서 Eval ("status")를 호출하면됩니다.

    그래서

    string status = (string) Eval("status"); 
    if (status == "0") { // etc } 
    
    +0

    왜 글쓰기를 다시 하시겠습니까? 여기에 언급 된 코드는 질문과 정확히 일치합니다. – Pankaj

    +0

    @PankajGarg, 더 자세히 읽어 보시기 바랍니다. 작성자는 텍스트를 가져 오기 위해 컨트롤에 액세스하려고합니다. 동일한 범위에서 Eval에서 직접 텍스트를 가져올 수 있기 때문에 필요하지 않습니다. –

    +0

    여기에 언급 된 코드와 유사하지 않은 코드를 작성하십시오. – Pankaj

    0

    당신은하여 ItemDataBound에 첨부하거나 이벤트를 ItemCreated하고 거기에 코드를 실행할 수 있습니다.

    예는이 게시물을 참조하십시오 - 당신은 레이블을 얻을 필요가 같이 http://www.toars.com/2010/11/listview-events-01/

    관련 문제