Asp.net dropdownlist中的不同值取决于我在另一个dropdownlist中选择的内容

Asp.net dropdownlist中的不同值取决于我在另一个dropdownlist中选择的内容,asp.net,webforms,html-select,cascadingdropdown,Asp.net,Webforms,Html Select,Cascadingdropdown,我想制作和创建的内容:我想在asp.net中制作2个dropdownlist。假设第一个包含国家,第二个包含国家中的城市 假设我在第一个下拉列表中选择英格兰,那么在第二个下拉列表中,只有属于英格兰的城市才可见或可选择 <asp:DropDownList ID="Countries" runat="server"> // First dropdownlist <asp:ListItem>England</asp:ListItem> <as

我想制作和创建的内容:我想在asp.net中制作2个dropdownlist。假设第一个包含国家,第二个包含国家中的城市

假设我在第一个下拉列表中选择英格兰,那么在第二个下拉列表中,只有属于英格兰的城市才可见或可选择

<asp:DropDownList ID="Countries" runat="server">  // First dropdownlist
    <asp:ListItem>England</asp:ListItem>
    <asp:ListItem>Denmark</asp:ListItem>
</asp:DropDownList>

<asp:DropDownList ID="Citys" runat="server">    // Second dropdownlist
</asp:DropDownList>
//第一个下拉列表
英格兰
丹麦
//第二个下拉列表

我希望我对它的解释足够好,我希望有人能给我提供一些代码或提示。

它被称为级联下拉列表,我建议查看ASP.NET AJAX控件工具包
CascadingDropDownList
控件

阅读教程

实际上,您将创建多个(本例中有两个)常规ASP.NET下拉列表服务器控件,以及所需的每一级级联的级联下拉列表服务器控件。这就是将两个下拉列表结合在一起的原因

所有数据获取都是通过ASP.NET AJAX页面方法完成的,这些方法本质上是页面托管的web服务方法,没有对页面本身的引用,因为它们是静态的,非常适合通过脚本(即客户端)向服务器请求数据并返回数据


注意:默认情况下,ASP.NET AJAX页面方法将数据编码为JSON,因此除非您希望返回JSON以外的内容(即XML),否则将看不到任何编码逻辑。

您可以使用常规下拉列表执行此操作,并使用代码背后的处理程序使其级联:

(警告-自己的博客帖子):


如果使用SqlDataSource,可以将所选值级联到CitySqlDataSource

这里是演示-

数据库 ASPX

城市来自哪里,您的数据库?无论哪种方式,这一点以前已经得到过无数次的回答:)。如果您想在不刷新页面的情况下完成此操作,则需要使用AJAX。这里的想法可能是提供声明性解决方案,而不是尽可能使用代码隐藏。。。
   Countries                                Cities
Id       Name                    Id      CountryId      Name
1        England                 1            1         London
2        Denmark                 2            2         Copenhagen    
<asp:DropDownList ID="CountryDropDownList" runat="server"
    DataSourceID="CountrySqlDataSource" 
   DataTextField="Name" DataValueField="Id" AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="CountrySqlDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT Id,Name FROM [Countries]"></asp:SqlDataSource>

<asp:DropDownList ID="CityDropDownList" runat="server"
    DataSourceID="CitySqlDataSource" 
    DataTextField="Name" DataValueField="Id">
</asp:DropDownList>
<asp:SqlDataSource ID="CitySqlDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT Id,Name FROM Cities WHERE CountryId=@CountryId">
    <SelectParameters>
        <asp:ControlParameter ControlID="CountryDropDownList" 
            PropertyName="SelectedValue"
            Name="CountryId " Type="String" 
            DefaultValue="England" />
    </SelectParameters>
</asp:SqlDataSource>