0

这一直让我发疯......我有两个动态创建的 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 保留索引上的旧值已更改,然后在我用数据库中的新值重新填充列表后尝试将其添加到列表中,但是我关闭了 viewState 来检查这个它仍然没有区别:|。

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

4

1 回答 1

0

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

所以我假设你真的想要:

' ...
 modelDD.Items.Clear()
 modelDD.SelectedIndex = -1  ' instead of SelectedValue = -1
' ...
于 2013-08-23T10:19:57.007 回答