2011-08-23 4 views
1

이 문제를 몇 시간 동안 디버깅 한 후 (제목 참조) 인터넷에 의지하고 있습니다. 미리 말씀 드리 자면이 질문을 만드는 동안 "유사한 제목의 질문"을 읽었습니다. 그들은 좋은 통찰력을 제공했지만 해결되지 않았습니다.SelectedIndexChanged에서 UpdatePanel의 가시성 제어

여기 기본 이벤트 맵 :

  1. 페이지가로드 RadioListBox의 첫 번째 인덱스 [0] 선택 = "true"로 설정됩니다.
  2. 사용자가 다른 인덱스를 선택하고, 특정 항목 값이 선택된 경우, "true"로 이어지는 패널의 가시성을 설정

그래서 일체의 조언이의 ASP.NET AJAX의 세계에 비교적 새로운 오전 고맙습니다. 너 한테 푸우 먹기를 말하지 않으면, 나는 그걸 알지 못할지도 모른다.

다음은 코드를 디버깅하기 위해 취한 단계입니다.

마크 업 :

<asp:UpdatePanel runat="server" ID="updpnlDDCancelPartnerOpts" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <asp:Panel runat="server" CssClass="frmDDCancelPartnerOpts"> 
     <fieldset> 
     <legend>Digital Cancellation Options:</legend> 
     <br /> 
     <asp:RadioButtonList ID="rdlstCancellOptions" runat="server" AutoPostBack="true" 
            cssclass="rdBtnLstDDCancelOpts"         onselectedindexchanged="rdlstCancellOptions_SelectedIndexChanged"> 
      <asp:ListItem Value="cancelall" Selected="True">Cancel ALL Digital Distribution:</asp:ListItem> 
      <asp:ListItem Value="canceldotcom">Cancel CD Baby ONLY:</asp:ListItem> 
      <asp:ListItem Value="partnercancellations">Cancel From Specific Partners:</asp:ListItem> 
     </asp:RadioButtonList> 
     </fieldset> 
    </asp:Panel> 

    <asp:Panel runat="server" ID="pnlChecks" CssClass="partner"> 
    </asp:Panel> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="rdlstCancellOptions" EventName="SelectedIndexChanged"/> 
    </Triggers> 
</asp:UpdatePanel> 

코드 숨김 (예 내가하지 양식 태그의 내부 필드 셋을 알고 의미하지, 난에 대해 나중에 걱정 것이다) : (당신이 있다면 그냥 이벤트 방법을 게시하도록하겠습니다 단지 ':

protected void rdlstCancellOptions_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (rdlstCancellOptions.SelectedValue == "partnercancellations") 
      { 
       pnlChecks.Visible = true; 
       updpnlDDCancelPartnerOpts.Update(); 
      } 
     } 

Debuggin에게, 더보고 싶은 :

을 내가 별도의 UpdatePanels의 각합니다 (RLB 제어 및 pnlChecks 패널)를 포장, 나는 그들을 트리거를 사용하지 사용하고, WI AutoPostBack의 모든 조합에 대해서.

무엇보다도 이벤트 기능에 중단 점이 설정되면이를 반복하여 반복하고 페이지로 돌아갑니다. 새로 고치지 않고 pnlChecks 패널을 표시하도록 설정합니다.

ScriptManager는 MasterPage에 포함되어 있습니다.

나는 아마 정보의 떼거리를두고있다라는 것을 알고있다. 그러나 17 시간의 근무일 (17 시간을 소비 한 것은 아니지만)이 늦어지면 더 이상 컴퓨터 화면을 보지 않아도됩니다.

내가 누락 된 내용이있는 경우 (분명한 사실이라면) 공유하십시오. 모두에게 백만 인터넷! 이미 볼 수 있어요 :)

답변

0

대답을 발견,

<asp:Panel runat="server" ID="pnlChecks" Visible="false" CssClass="partner"> 
    Show me 
</asp:Panel> 

코드는 OK이지만 패널을 보여 아무것도 없어 :

Koohoy0x

+0

해당하는 경우 답변으로 표시해주세요. –

1

이보십시오. 데이터 소스를 채우는 데 사용 된 매개 변수는 다른 메소드에 대해 로컬이므로 checkbox 목록에 null을 반환합니다. Count를 사용하여 디버깅 한 결과 데이터가 생성되지 않았 음을 알았습니다. 그러나 Ajax는 정상적으로 작동합니다. 귀하의 회신과 시간에 감사드립니다.

+0

죄송합니다. 지정해야합니다. Page_Load에서 visible = false로 설정 했으므로이 방법을 시도합니다. – Ken

+0

나는 정교 할 것이다.패널 : "pnlChecks"는 런타임에 데이터 소스의 CheckBoxList 컨트롤로 동적으로 채워집니다. 페이지가로드 될 때 CBL을 채우는 메소드를 호출하고 가시성을 false로 설정합니다. 어쩌면 내가 가시성을 엉망으로 만들려고하는 대신 OnSelectedIndexChanged()에서 채우기 메서드를 처리해야 할 수도 있습니다. Hrmmmm. – Ken