2009-08-20 56 views
1

创建2名链接下拉列表中我有2个链接数据库表(以全国同类 - >州) - 我该如何动态填充2下拉列表这些表这样的:Asp.net - 从数据库

如果我选择一个国家,只有该国的国家出现在第二个下拉列表中?

更新: 似乎有一个解决方案在此页面上 - >Populate DropdownList based upon other DropDownList VB - >在aspx页面上使用SQL Data连接的数据绑定下拉列表 - 我如何在LINQ中执行此操作?我想我可以从这里弄清楚。

回答

2

您的国家/地区控制隐藏,并且您的国家/地区下拉列表中的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 
+0

这需要一个回传和页面更新或重装,是否正确? – stringo0 2009-08-20 18:35:09

+0

是的,它需要回发,或者包装在Ajax Toolkit UpdatePanel中以使其看起来无缝。 – databyss 2009-08-28 10:21:44

1

这将需要两件事情之一:

  1. 非平凡的JavaScript。 (使用JQuery更容易,提供一组将数据与国家关联的数据,并且每次用户选择新国家时使用JavaScript创建/填充列表。时间的用户选择一个国家,你问的服务器状态的一个新的列表,并使用AJAX来更新的状态下拉。)
+0

你可以扩展如何做#2吗?我可以使用js,但我宁愿填充数据库中的字段,因为将来可能需要这些字段。 – stringo0 2009-08-20 18:36:31

+0

使用JS并从数据库填充不是单独的选项。如果您倾向于使用数据库内容,您可以创建一些动态JavaScript。在databyss的答案中更好地描述了#2。 – 2009-08-20 19:29:59