我在详细信息视图中有一个下拉列表,我将在详细信息视图中编辑记录。我的问题是详细信息视图中的dropdownlist绑定到一个字段并给出错误
'DropDownList1'有一个SelectedValue,它是无效的,因为它确实如此 项目列表中不存在。参数名称:值
这是由于selectedvalue值不在下拉列表中。
有人能告诉我如何处理这个错误。我想使用try catch并且什么也不做,只是忽略错误,或者在下拉列表中将空白值作为selectedvalue传递。
我遇到的主要问题是我不确定将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>
答案 0 :(得分:0)
您可以使用try catch around base.Render来覆盖用户控件的OverRender方法处理异常
答案 1 :(得分:0)
而不是使用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