我想制作和制作:我想在asp.net中制作2个下拉列表。可以说第一个包含国家,第二个包含国家中的城市。
假设我在第一个下拉列表中选择了英格兰,然后只有属于英格兰的城市将在第二个下拉列表中可见或可选择。
<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>
我希望我解释得足够好,我希望有人能为我提供一些可以做到的代码或暗示它。
答案 0 :(得分:2)
如果使用SqlDataSource,则可以将所选值级联到CitySqlDataSource。
这里是演示 -
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>
以下是类似的answer。
答案 1 :(得分:1)
它被称为级联下拉列表,我建议查看ASP.NET AJAX Control Toolkit CascadingDropDownList
控件。
阅读Using CascadingDropDown with a Database获取教程。
基本上,您将创建多个(在您的情况下为两个)常规ASP.NET下拉列表服务器控件,以及您想要的每个级联级联的下拉列表服务器控件。这就是将两个下拉列表结合在一起的原因。
所有数据提取都是通过ASP.NET AJAX页面方法完成的,这些方法本质上是页面托管的Web服务方法,没有对页面本身的引用,因为它们是静态的,非常适合询问服务器数据通过脚本(即客户端)并返回它。
注意:默认情况下,ASP.NET AJAX页面方法将数据编码为JSON,因此除非您想要返回除JSON(即XML)之外的其他内容,否则您将看不到任何编码逻辑。
答案 2 :(得分:-1)