Как обрабатывать ошибки, используя try catch в раскрывающемся списке в подробном представлении
У меня есть выпадающий список в подробном представлении, где я буду редактировать записи в подробном представлении. Моя проблема - выпадающий список в подробном представлении привязывается к полю и выдает ошибку
DropDownList1 имеет SelectedValue, которое недопустимо, поскольку его нет в списке элементов. Имя параметра: значение
Это связано с тем, что значение выбранного значения отсутствует в раскрывающемся списке.
Может кто-нибудь сказать мне, как справиться с этой ошибкой. Я хочу использовать try catch и ничего не делать и просто игнорировать ошибку или, возможно, передать пустое значение в качестве выбранного значения в раскрывающемся списке.
Основная проблема у меня в том, что я не уверен, куда поместить выражение try catch.
Полный код ниже.
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
DataKeyNames="RecordRef" DataSourceID="EntityDataSource1" Height="50px"
Width="125px">
<Fields>
<asp:BoundField DataField="RecordRef" HeaderText="RecordRef" ReadOnly="True"
SortExpression="RecordRef" />
<asp:BoundField DataField="CustomerID" HeaderText="CustomerID"
SortExpression="CustomerID" />
<asp:TemplateField HeaderText="JobCategory" SortExpression="JobCategory">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="EntityDataSource2" DataTextField="ItemValue"
DataValueField="ItemValue" SelectedValue='<%# Bind("JobCategory") %>'>
</asp:DropDownList>
<asp:EntityDataSource ID="EntityDataSource2" runat="server"
ConnectionString="name=CRMSEntities" DefaultContainerName="CRMSEntities2"
EnableFlattening="False" EntitySetName="KeyValues">
</asp:EntityDataSource>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("JobCategory") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("JobCategory") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="JobDescription" HeaderText="JobDescription"
SortExpression="JobDescription" />
<asp:BoundField DataField="JobDate" HeaderText="JobDate"
SortExpression="JobDate" />
<asp:BoundField DataField="JobStatus" HeaderText="JobStatus"
SortExpression="JobStatus" />
<asp:BoundField DataField="Referral" HeaderText="Referral"
SortExpression="Referral" />
<asp:CommandField ShowEditButton="True" ShowInsertButton="True" />
</Fields>
</asp:DetailsView>
2 ответа
Вы можете обработать исключение с помощью метода переопределения OnRender вашего usercontrol с помощью try catch для base.Render
Вместо использования Try ... Catch вы можете использовать следующее в коде (в данном случае VB):
Dim ddlItem As ListItem
ddlItem = myDDL.Items.FindByValue(UserInput.ToString())
If Not ddlItem Is Nothing Then
ddlItem.Selected = True
Else
myDDL.Text = "Some text to indicate failure"
End If