下拉不会填写BLL

时间:2011-11-26 13:46:07

标签: asp.net vb.net

我想通过使用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。有谁知道如何解决这个问题?

1 个答案:

答案 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做你想做的事情,避免回页。