0

3 つのドロップダウン リストがあります。2 番目は 1 番目に依存し、3 番目は 2 番目に依存します。2 つの異なる SQL ステートメントがあります。1 つ目は、最初のドロップダウン リストのデータを取得することです。2 つ目と 3 つ目のドロップダウン リストは、2 つ目の sql ステートメントに依存します。

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>
4

2 に答える 2

0

SqlDataSource で "SelectParameters" を使用し、それを "ControlParameter" と組み合わせて、最初のドロップダウンの値を 2 番目のクエリの値に接続します。次のようになります。

<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() を呼び出してクエリを実行し、ドロップダウンにデータを入力します。

于 2013-07-28T20:36:57.817 に答える