我想通过使用BLL和DAL类来填充页面加载中的下拉列表。这是代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
dropBrand.DataSource = BLLManufacturer.selectManufacturers()
dropBrand.DataTextField = "ManufacturerName"
dropBrand.DataValueField = "ManufacturerID"
dropBrand.DataBind()
dropModel.DataSource = BLLModel.selectModelsByBrand(Convert.ToInt16(dropBrand.SelectedValue))
dropModel.DataTextField = "ModelName"
dropModel.DataValueField = "ModelID"
dropModel.DataBind()
End Sub第一个下拉菜单按照它应该做的那样填充了品牌,但第二个没有。第二个下拉列表需要在第一个下拉列表中显示所选品牌的汽车型号。然而,无论我选择什么品牌,dropBrand.SelectedValue总是返回0。没有convert toint16,它就不能工作,也不能使用convert toint32或toint64。有人知道怎么解决这个问题吗?
发布于 2011-11-26 21:52:16
您已有的内容将不起作用,因为它只将初始数据绑定到下拉列表。
您需要设置一个将为BLLManufacturer下拉列表触发的SelectedIndexChanged事件,然后从该列表中获取所选值,并将数据绑定到BLLModel列表。类似这样的东西(代码未经过测试)-
Private Sub BLLManufacturer_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BLLManufacturer.SelectedIndexChanged
' Get the currently selected item in the ListBox.
Dim curItem As String = BLLManufacturer.SelectedItem.ToString()
dropModel.DataSource = BLLModel.selectModelsByBrand(Convert.ToInt16(curItem ))
dropModel.DataTextField = "ModelName"
dropModel.DataValueField = "ModelID"
dropModel.DataBind()
End Sub你也可以通过AJAX做你想做的事情,避免页面回发。
https://stackoverflow.com/questions/8278801
复制相似问题