创建2名链接下拉列表中我有2个链接数据库表(以全国同类 - >州) - 我该如何动态填充2下拉列表这些表这样的:Asp.net - 从数据库
如果我选择一个国家,只有该国的国家出现在第二个下拉列表中?
更新: 似乎有一个解决方案在此页面上 - >Populate DropdownList based upon other DropDownList VB - >在aspx页面上使用SQL Data连接的数据绑定下拉列表 - 我如何在LINQ中执行此操作?我想我可以从这里弄清楚。
创建2名链接下拉列表中我有2个链接数据库表(以全国同类 - >州) - 我该如何动态填充2下拉列表这些表这样的:Asp.net - 从数据库
如果我选择一个国家,只有该国的国家出现在第二个下拉列表中?
更新: 似乎有一个解决方案在此页面上 - >Populate DropdownList based upon other DropDownList VB - >在aspx页面上使用SQL Data连接的数据绑定下拉列表 - 我如何在LINQ中执行此操作?我想我可以从这里弄清楚。
您的国家/地区控制隐藏,并且您的国家/地区下拉列表中的autopostback = true。
在SelectedIndexChanged上,取出该值并使用该值查询数据库,然后将状态下拉列表设置为可见。
在ASPX页面:
<asp:DropDownList ID="CountryDD" runat="server" AutoPostBack="true" OnSelectedIndexChanged="CountryDD_IndexChanged" />
<asp:DropDownList ID="StateDD" runat="server" Visible="false"/>
后面的代码:
Protected Sub CountryDD_IndexChanged(ByVal sender As Object, ByVal e As EventArgs)
StateDD.Items.Clear()
Using conn As SqlConnection = New SqlConnection("Connection String")
conn.Open()
Using cmd As SqlCommand = New SqlCommand("get_states_by_country", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@country_id", CountryDD.SelectedValue)
Using dr As SqlDataReader = cmd.ExecuteReader()
StateDD.Items.Add(New ListItem(dr("state_name").ToString(), dr("state_id")))
End Using
End Using
End Using
End Sub
这将需要两件事情之一:
你可以扩展如何做#2吗?我可以使用js,但我宁愿填充数据库中的字段,因为将来可能需要这些字段。 – stringo0 2009-08-20 18:36:31
使用JS并从数据库填充不是单独的选项。如果您倾向于使用数据库内容,您可以创建一些动态JavaScript。在databyss的答案中更好地描述了#2。 – 2009-08-20 19:29:59
如果你不反对使用Microsoft Ajax Control Toolkit,他们有一个名为Cascading Dropdown的控件可以做你想做的事
我最终在Populate DropdownList based upon other DropDownList VB上使用了其中的一个答案 - 我把2个下拉列表放入了一个AJAX Upda te面板。这与databyss的答案相同,只是它在页面定义本身中使用数据绑定,不需要后端代码。
代码:
这需要一个回传和页面更新或重装,是否正确? – stringo0 2009-08-20 18:35:09
是的,它需要回发,或者包装在Ajax Toolkit UpdatePanel中以使其看起来无缝。 – databyss 2009-08-28 10:21:44