0

我有三个下拉列表 - 第二个取决于第一个,第三个取决于第二个。我有两个不同的 sql 语句。第一个是获取第一个下拉列表的数据,第二个和第三个下拉列表依赖于第二个 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”结合起来,将第一个下拉列表的值连接到第二个查询中的值。它会是这样的:

<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 回答
0

似乎您期望同一页面上的数据。您必须首先从第一个下拉列表中输入值,然后您才能对第二个 drplist 进行其他尝试

于 2013-07-28T20:23:22.643 回答