【发布时间】:2021-07-12 09:47:02
【问题描述】:
当某些特定条件发生变化时,我正在尝试填充下拉列表。这在所有情况下都可以正常工作 99%。但是偶尔,我会在我们的生产服务器上收到此错误:
Exception of type 'System.Web.HttpUnhandledException' was thrown.; 'ddlNCE' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value;
我们无法在我们的开发环境中复制这一点。这是调用堆栈:
at System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable dataSource)
at System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.ListControl.PerformSelect()
at SeqClass.FillDDL(DropDownList aList)
at operations.BindEventDataDDLs()
at operations.SetFilterPanels()
at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventA...
这里是绑定下拉的简化函数:
Public Shared Sub FillDDL(aList As DropDownList)
aList.Items.Clear()
aList.ClearSelection()
aList.DataTextField = "TextColumn"
aList.DataValueField = "ID"
aList.DataSource = DAL.GetDataTable("Select ID,TextColumn From MyTable Order By TextColumn")
aList.DataBind()
aList.Items.Insert(0, New ListItem("-- Select Item --", String.Empty))
End Sub
在调用Databind 之前,正在清除列表和选择。有谁知道为什么这个错误在我们的生产服务器上随机发生?
【问题讨论】:
-
我没有任何想法,但我尝试调试它的第一件事是抛出一个带有一些日志记录的 try/catch 块,以尝试获取有关系统状态的更多信息。发生错误。现在,你不知道值是什么,也不知道当时的列表是什么;如果你知道这些事情,也许问题就很明显了。