2014-01-16 2 views
2

저는 상당히 새로운데 Visual Studio에서 asp.net을 사용하고 있습니다. 나는 사람들이 데이터베이스에서 데이터를 다운로드 할 시스템을 가지고있다. 이렇게하려면 두 개의 드롭 다운 목록을 갖고 싶습니다. 하나는 우편 번호 용이고 다른 하나는 MonitorID 용입니다.중첩 된 UpdatePanels의 드롭 다운 목록

우편 번호 드롭 다운 목록은 databound로 모든 별개 우편 번호를 표시합니다. 모니터 ID 드롭 다운 목록은 첫 번째 드롭 다운의 우편 번호에 포함 된 모든 모니터 ID를 표시하기 위해 데이터 바인딩됩니다.

우편 번호 목록에서 선택한 항목에 따라 MonitorID 목록을 변경하고 싶습니다. UpdatePanels가이를 수행하는 좋은 방법이라는 것을 읽었습니다. 나는 포럼 게시판을 통과했으며,이 일을하는 것에 가깝다고 느낀다.하지만 뭔가 제대로 연결되지 않고 무엇이 확실하지 않다. 아래는 내 코드입니다.

<form id="rawDataForm" runat="server"> 
       <asp:ScriptManager ID="RawDataScriptManager" runat="server" EnablePageMethods="True"> 
       </asp:ScriptManager> 

       <asp:UpdatePanel ID="Outter_Zip" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <asp:DropDownList ID="DropDownListZip" runat="server" DataSourceID="DistinctZip" DataTextField="Zip" DataValueField="Zip" AutoPostBack="True"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="DistinctZip" runat="server" ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" SelectCommand="SELECT DISTINCT [Zip] FROM [Monitor]"></asp:SqlDataSource> 
         <asp:UpdatePanel ID="Inner_Monitor" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional"> 
          <ContentTemplate> 
           <asp:DropDownList ID="DropDownListMonitor" runat="server" AutoPostBack="True" DataSourceID="MonitorFromZip" DataTextField="MonitorID" DataValueField="MonitorID"> 
           </asp:DropDownList> 
           <asp:SqlDataSource ID="MonitorFromZip" runat="server" ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" SelectCommand="SELECT [MonitorID] FROM [Monitor] WHERE ([Zip] = @Zip)"> 
            <SelectParameters> 
             <asp:FormParameter DefaultValue="97601" FormField="DropDownListZip" Name="Zip" Type="String" /> 
            </SelectParameters> 
           </asp:SqlDataSource> 
          </ContentTemplate> 
          <Triggers> 

           <asp:AsyncPostBackTrigger ControlID="DropDownListZip" EventName="SelectedIndexChanged" /> 
          </Triggers> 
         </asp:UpdatePanel> 
        </ContentTemplate> 
       </asp:UpdatePanel> 

다른 설정을 올바르게 지정해야합니까? 포스트 백과 관련이 있습니까? DropDownListZip selectedindex가 변경 될 때 asyncpostback으로 설정된 Inner_Monitor 업데이트 패널에 트리거가 있습니다.

+0

안녕하세요, JClark4321 - 내 답변이 문제 해결에 도움이 되었습니까? 아니면 아직도 붙어있어 좀 더 도움이 필요합니까? – jadarnel27

답변

0

나는 완전히 내부 UpdatePanel을 제거 말할 것이다 : 그것은있을 수 할 필요가

<form id="rawDataForm" runat="server"> 
    <asp:ScriptManager ID="RawDataScriptManager" runat="server" EnablePageMethods="True"> 
    </asp:ScriptManager> 

    <asp:UpdatePanel ID="Outter_Zip" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:DropDownList ID="DropDownListZip" runat="server" DataSourceID="DistinctZip" 
       DataTextField="Zip" DataValueField="Zip" AutoPostBack="True"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="DistinctZip" runat="server" 
       ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" 
       SelectCommand="SELECT DISTINCT [Zip] FROM [Monitor]"> 
      </asp:SqlDataSource> 

      <asp:DropDownList ID="DropDownListMonitor" runat="server" AutoPostBack="True" 
       DataSourceID="MonitorFromZip" DataTextField="MonitorID" DataValueField="MonitorID"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="MonitorFromZip" runat="server" 
       ConnectionString="<%$ ConnectionStrings:VOCMSConnectionString %>" 
       SelectCommand="SELECT [MonitorID] FROM [Monitor] WHERE ([Zip] = @Zip)"> 
       <SelectParameters> 
        <asp:ControlParameter DefaultValue="97601" ControlID="DropDownListZip" 
         Name="Zip" PropertyName="SelectedValue" /> 
       </SelectParameters> 
      </asp:SqlDataSource> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="DropDownListZip" EventName="SelectedIndexChanged" /> 
     </Triggers> 
    </asp:UpdatePanel> 

없다 - 당신이 UpdatePanel 밖으로 독립적으로 내부 UpdatePanel을 새로 고침 할 필요가 없습니다 것입니다 주로 때문이다.

FormParameter를 ControlParameter로 변경 한 이유는이 시나리오에서이 매개 변수가 더 유용하다고 생각하기 때문입니다.