动态下拉列表 - SelectedValue无效,因为它在项列表中不存在

时间:2013-08-23 10:10:28

标签: asp.net vb.net dynamic drop-down-menu selectedvalue

这让我很生气...我有两个动态创建的asp下拉框,品牌和型号。当用户选择品牌时,它会调用名为makeChanged的ASP按钮。当makeChanged运行时,它应该清除模型下拉列表中的项目,然后创建新项目。所以处理makeChanged按钮的代码如下:

Sub makeChanged (ByVal sender As Object, ByVal e As System.EventArgs)

Dim thingID = sender.ID.split("_")(1)

Dim modelDD As DropDownList = thingsContainer.FindControl("model_" & thingID )
modelDD.EnableViewState = False
modelDD.Items.Clear()
modelDD.SelectedValue = -1
modelDD.AppendDataBoundItems = True

Dim select_qry = "select * from Models where makeid=" & sender.SelectedValue

Dim objData2 As SqlDataReader = getSqlQueryObj(select_qry)
modelDD.DataSource = objData2
modelDD.DataValueField = "models"
modelDD.DataTextField = "models"
modelDD.DataBind() 'This is where the error is getting triggered from

End Sub

我知道查询或查找下拉列表没有任何问题,因为我已经运行了许多response.write,并且它返回了预期的结果。我认为这可能是因为viewState保留了索引更改后的旧值,然后尝试将其添加到列表中,然后我使用DB中的新值重新填充列表但是我关闭了viewState来检查这个它仍然没有什么区别:|。

任何帮助表示赞赏! 谢谢!

1 个答案:

答案 0 :(得分:0)

您已将SelectedValue设置为必须存在的-1。不要将其与SelectedIndex混淆,-1表示不应选择任何内容。

所以我假设你真的想要:

' ...
 modelDD.Items.Clear()
 modelDD.SelectedIndex = -1  ' instead of SelectedValue = -1
' ...