我想通过使用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我选择的任何品牌。如果没有转换为toint16,它既不能工作,也不能转换为toint32或toint64。有谁知道如何解决这个问题?
答案 0 :(得分:0)
你所拥有的东西不起作用,因为它只是将初始数据绑定到下拉列表。
您需要设置一个SelectedIndexChanged
事件,该事件将触发BLLManufacturer
下拉列表,然后从该列表中获取所选值并将数据绑定到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做你想做的事情,避免回页。