SelectedValue 无效,因为它不存在于项目列表中,如何处理此错误



当我尝试绑定数据时,我收到以下错误。

选择值无效,因为它在列表中不存在 项目数量

<asp:DropDownList ID="DropDownList2" runat="server" 
     DataSourceID="JobCategoryEntityDataSource" DataTextField="ItemValue"
     DataValueField="ItemValue" SelectedValue='<%# Bind("JobCategory") %>' 
     Width="230px">
</asp:DropDownList>

我知道出现此错误的原因。这是因为它在选择中找不到值。当事务表中的 JohCategory 字段在来自 JobCategoryEntityDataSource 的列表中找不到它时,它只会抛出错误。

我要做的就是在下拉列表中找不到数据并且不想抛出错误时不绑定数据。我该怎么做?

另一种选择是,如果找不到匹配的值,只需添加"请选择"或类似内容。

有人可以帮忙吗?

您可以在dropdown的事件中选择DataBound值。您可以检查值是否存在,然后选择它,也可以实现try catch

<asp:DropDownList ID="DropDownList2" runat="server"
 DataSourceID="JobCategoryEntityDataSource" DataTextField="ItemValue"
 DataValueField="ItemValue" 
 Width="230px" OnDataBound="DropDownList2_DataBound">
</asp:DropDownList>
<asp:HiddenField ID="JobCategory" runat="server" value='<%# Bind("JobCategory") %>'></asp:HiddenField>

代码隐藏

protected void DropDownList2_DataBound(object sender, EventArgs e)  
{  
    try{
       HiddenField hf = (HiddenField)Form.FindControl("JobCategory");
       DropDownList2.SelectedValue = hf.Value;
    }Catch(Exception ex){
    }
}  
您需要

将其绑定到代码中,并且

  • 将语句包装在 try/catch 块中
  • 首先检查该项目是否存在FindByName,如果没有,可以选择添加它。

最新更新