2013-07-28 183 views
0

我有三個下拉列表 - 第二個取決於第一個和第三個取決於第二個。我有兩個不同的SQL語句。首先是獲取第一個下拉列表的數據,第二個和第三個下拉列表依賴於第二個sql語句。基於上一個下拉列表ID篩選下拉列表

我對於如何使用sql語句配置下拉列表以及基於id進行正確過濾有點遺憾。

我啓用了AutoPostBack作爲第一個下拉列表。

這裏是我有:

<div> 
      Section: <asp:DropDownList ID="FistDropDown" runat="server" DataSourceID="Sections" DataTextField="DisplayName" DataValueField="ID"></asp:DropDownList> 
      <asp:SqlDataSource ID="Parent" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnection %>" SelectCommand="SELECT e.DisplayName, e.ID , e.GUID 
FROM Elements e 
INNER JOIN ATable re 
ON e.ID = re.ATableID 
AND re.InstitutionsID = 1"></asp:SqlDataSource> 
     </div> 
     <br /> 
     <div style="margin-left: 65px"> 
      <asp:DropDownList ID="SecondDropDown" runat="server" AutoPostBack="True" DataSourceID="FirstChild" DataTextField="DisplayName" DataValueField="ID"></asp:DropDownList> 
      <asp:SqlDataSource ID="FirstChild" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnection %>" SelectCommand="SELECT e.DisplayName, e.ID , e.GUID 
FROM Elements e 
INNER JOIN ATableMap em 
ON e.ID = em.KnowsATableID 
WHERE em.ATableID = "></asp:SqlDataSource> 
     </div> 
     <br /> 
     <div style="margin-left: 75px"> 
      <asp:DropDownList ID="ThirdDropDown" runat="server"></asp:DropDownList> 
     </div> 
+0

這是*不* ASP.NET MVC ... –

+0

@PatryCwiek我有項目設置爲Asp.net mvc - 儘管我可能不會那樣使用 – Masriyah

回答

0

看來你是希望同一頁上的數據。 您必須首先輸入第一個下拉列表中的值,然後您可以繼續嘗試第二個drplist的相同操作

+0

我怎樣才能得到我的sql語句的第二個drplist根據id表格填寫第一個drplist? – Masriyah

+0

如果您首先從第一個下拉列表中保存數據,或者如果將數據存儲在某個參數中,則可以完成此操作。 – user2627493

0

您需要在SqlDataSource中使用「SelectParameters」,並將其與「ControlParameter」組合使用以連接將第一個下拉列表的值減小到第二個查詢中的值。這將是這樣的:

<asp:SqlDataSource ID="FirstChild" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnection %>" 
    SelectCommand="SELECT e.DisplayName, e.ID , e.GUID 
        FROM Elements e 
        INNER JOIN ATableMap em 
        ON e.ID = em.KnowsATableID 
        WHERE em.ATableID = ?"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="FirstDropDown" PropertyName="SelectedValue" Name="ID" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

把手上的首次下降SelectedIndexChanged事件下來,並調用SecondDropDown.DataBind(),以導致查詢執行和填充下拉。

相關問題