2010-06-24 2 views
1

목록보기의 Itewmtemplate에 사용자가 로그인했을 때 표시해야하는 패널이 있습니다. 기본적으로 visibility = false입니다. . 도움을 주시면 감사하겠습니다.Listview에있는 패널에서 오류가 발생합니다. (개체 참조가 개체의 인스턴스로 설정되지 않았습니다.)

Panel pnlOptions = (Panel)ListView1.FindControl("pnlOptions"); 
    pnlOptions.Visible = true; 

영문 코드 :

<asp:Panel ID="pnlOptions" runat="server" Visible="false"> 
    <ul> 
     <ul> 
     <li style="float: left">Option 1:</li> 
     <li style="float: left">dropdown here</li> 
     </ul> 
    <li style="float: left">Option 1:</li> 
    <li style="float: left">dropdwon here</li> 
    </ul> 

    </asp:Panel> 

답변

1

의 FindControl 호출 중 하나이기 때문에 오류가 있어요 : 여기

내 C# 코드입니다 실패

  1. - 경우 항목이 컨트롤의 자식으로 발견되지 않으면 FindControl이 null을 반환합니다.

  2. "잘못된"개체를 찾고 (Panel)에 대한 캐스트가 실패했습니다.

나는대로 코드를 재 작성 권 해드립니다 : 그런 다음 중단 점을 설정할 수 있습니다

Control control = ListView1.FindControl("pnlOptions"); 
Panel pnlOptions = control as Panel; 
pnlOptions.Visible = true; 

, 당신에 실패 라인의 알아낼.

protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e) 
{ 
    Control control = e.Item.FindControl("pnlOptions"); 
    Panel pnlOptions = control as Panel; 
    pnlOptions.Visible = true; 
} 

감사 리드 :

+0

네, 그것은 오류를 던지고 패널입니다. – Developer

+0

@ fzshah76 : 패널의 디버거에서 유형을 확인하십시오. 위와 같이 다시 작성하면 문제가 발생한 이유를 정확히 알아낼 수 있어야합니다. 문제를 해결하거나 해결할 정보가 더 필요합니다. 당신. –

+0

아니요. 그리드보기 유형과 비슷한 것 같아요. 또 다른 비슷한 질문입니다. http://forums.asp.net/t/1163895.aspx – Developer

0

내 문제는 내가 내가 여기 Item_Created 이벤트를 사용하는 가정 할 때 생성 기능을 통해 잘못을 액세서하려고 하였다는 최종 작업 코드입니다.

0

이것은 또한 작동합니다 :

foreach (var item in ListView1.Items) 
    { 
    Panel pnlOptions = (Panel)item.FindControl("pnlOptions"); 
    pnlOptions.Visible = true; 
    } 
관련 문제