1

我在详细信息视图中有一个下拉列表,我将在详细信息视图中编辑记录。我的问题是详细信息视图中的下拉列表绑定到一个字段并给出错误

“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>
4

2 回答 2

0

您可以通过在 base.Render 周围使用 try catch 来处理用户控件的覆盖 OnRender 方法的异常

于 2013-01-27T10:33:20.900 回答
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
于 2016-03-27T11:00:14.347 回答