2014-01-16 47 views
2

我對此很新,並且在Visual Studio中使用asp.net。我有一個系統,人們將從數據庫中下載一些數據。要做到這一點,我想有兩個下拉列表。一個用於郵政編碼,另一個用於MonitorID。嵌套UpdatePanels中的下拉列表

郵政編碼下拉列表是數據綁定以顯示所有不同的郵政編碼 顯示器標識下拉列表是數據綁定,顯示郵政編碼中第一個下拉列表中包含的所有監視器標識。

我想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更改時,Inner_Monitor更新面板上的觸發器設置爲asyncpostback。

+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,因爲我認爲這在這種情況下更有用。