【问题标题】:ASP.NET, refresh dropdownlist2 when dropdownlist1 selection changes?ASP.NET,当 dropdownlist1 选择更改时刷新 dropdownlist2?
【发布时间】:2012-03-13 09:16:58
【问题描述】:

我有两个数据绑定下拉列表控件。第一个(dropdownlist1)直接从表中提取。第二个 (dropdownlist2) 也从表中提取,但在其 WHERE 子句中使用从 dropdownlist1 中选择的值。

用户在下拉列表 1 中进行选择后,如何更新/刷新下拉列表 2? (如果通过代码完成,则使用 VB)

我尝试将 dropdownlist1 的“Auto Postback”属性设置为“true”,最终,这种方法有效。唯一的问题是,如果我不断更改下拉列表 1 中的选择,下拉列表 2 中可用的选择会重复。

两个下拉列表控件都包含在使用模板的 CreateUserWizard 控件中。我已经尝试在 dropdownlist1 的 SelectedIndexChanged 事件中使用 FindControl,然后在 dropdownlist2 上使用 DataBind(),但是在 dropdownlist1 中进行选择后不会发生任何变化。

有什么想法吗?

SelectedIndexChanged 事件

Protected Sub AssignedManager_SelectedIndexChanged(sender As Object, e As System.EventArgs)
    CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("AssignedSupervisor").DataBind()
End Sub

* 上面,AssignedManager 是第一个下拉列表,AssignedSupervisor 是第二个下拉列表 *

【问题讨论】:

  • 您能发布您的SelectedIndexChanged 活动吗?
  • 您可以使用 AppendDataBoundItems 或下拉列表的视图状态属性。

标签: asp.net


【解决方案1】:
Protected Sub AssignedManager_SelectedIndexChanged(sender As Object, e As System.EventArgs) 
    CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("AssignedSupervisor").DataSource
     = GetDataSource(Ctype(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("FirstDropDownID"),Dropdownlist).SelectedValue)

    CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("AssignedSupervisor").DataBind()
End Sub

Protected function GetDataSource(string id) as DataTable
    'This function should return datatable based on the value (id) from the first dropdownlist
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多