如何使用详细信息视图中的下拉列表中的try catch来处理错误

时间:2013-01-27 10:17:41

标签: c# asp.net entity-framework edit detailsview

我在详细信息视图中有一个下拉列表,我将在详细信息视图中编辑记录。我的问题是详细信息视图中的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>

2 个答案:

答案 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