C# EditItemTemplate中的DropDownList

C# EditItemTemplate中的DropDownList,c#,asp.net,C#,Asp.net,我在EditTemplate中使用下拉列表,如下所示: <EditItemTemplate> <asp:DropDownList ID="ddlBusinessType" runat="server" DataSourceID="BusinessTypeSource" DataTextField="Value" DataValueField="Value" AppendDataBoundItems="true"

我在EditTemplate中使用下拉列表,如下所示:

    <EditItemTemplate>                      
      <asp:DropDownList ID="ddlBusinessType" runat="server"  DataSourceID="BusinessTypeSource"  DataTextField="Value" DataValueField="Value" AppendDataBoundItems="true" Text='<%# Bind("BusinessType") %>'>
           <asp:ListItem>Please Select</asp:ListItem>
      </asp:DropDownList>                                                         
    </EditItemTemplate>
我遇到的问题是,我绑定的字段有一个空值。 由于数据源中没有空值,因此我收到以下错误消息:

“ddlBusinessType”的SelectedValue无效,因为它不在项目列表中。参数名称:value

我不知道如何解决这个问题。当我进行绑定时,如果该值不在数据源中,我希望将其默认为“请选择”

它应该类似于:

<EditItemTemplate>                      
    <asp:DropDownList ID="ddlBusinessType" runat="server"  
        DataSourceID="BusinessTypeSource"  
        DataTextField="BusinessType" DataValueField="Value" AppendDataBoundItems="true" >
        <asp:ListItem  Value="-1">Please Select</asp:ListItem>
    </asp:DropDownList>                                                         
</EditItemTemplate>

请选择
1) 无需设置文本,因为您已经对文本字段进行了绑定


2) 您需要为添加到标记中的默认项设置一个值。

取决于具体情况,但我经常使用的一个选项如下:

1) 在查找表中,我将有一个标题为“未选定”的条目, 主键值为0(或任何值)

2) 在事务表中,将该字段的所有空值更新为0(或“未选择”选项的任何值)。另外,将该字段的默认值设置为0


这很好,有两个原因——第一,不需要特殊的标记(所以您知道它总是一致的)——第二,无论您在哪里使用此数据,都可以访问“未选择”输出。

您正在尝试在绑定过程之前选择项。捕获绑定事件并在此位置设置取消选择的值。

您正在尝试在绑定过程之前选择该值。您应该将此行为移动到数据绑定事件。
<EditItemTemplate>                      
    <asp:DropDownList ID="ddlBusinessType" runat="server"  
        DataSourceID="BusinessTypeSource"  
        DataTextField="BusinessType" DataValueField="Value" AppendDataBoundItems="true" >
        <asp:ListItem  Value="-1">Please Select</asp:ListItem>
    </asp:DropDownList>                                                         
</EditItemTemplate>