SelectedValue, который является недопустимым, потому что он не существует в списке элементов, как обработать эту ошибку

Я получаю приведенную ниже ошибку при попытке связать данные.

SelectedValue, которое недопустимо, потому что его нет в списке элементов

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

Я знаю причину, почему я получаю эту ошибку. Это потому, что он не может найти значение в выборе. Когда поле JohCategory из таблицы транзакций не может найти его в списке, поступающем из JobCategoryEntityDataSource, оно просто выдает ошибку.

Все, что я хочу сделать, это не связывать данные, если они не могут найти их в выпадающем списке и не хотят выдавать ошибки. Как я могу это сделать?

Другой вариант, если он не может найти подходящее значение, просто добавьте "Пожалуйста, выберите" или что-то подобное.

Может кто-нибудь помочь, пожалуйста?

2 ответа

Вы можете выбрать значение в DataBound событие dropdown, Вы можете проверить наличие значения и затем выбрать его, или вы можете реализовать 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>

Code-Behind

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 сначала, затем, по желанию, добавьте его, если нет.
Другие вопросы по тегам