EditItemTemplate中的DropDownList

时间:2013-11-26 20:43:44

标签: c# asp.net

我在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>

DataSource具有以下值:

Personal
Professional

我遇到的问题是我绑定的字段有一个空值。 由于空白值不在DataSource中,因此出现以下错误消息:

'ddlBusinessType'有一个SelectedValue,它是无效的,因为它在项目列表中不存在。参数名称:值

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

3 个答案:

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

1)无需设置文本,因为您已经限制了文本字段。

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

答案 1 :(得分:0)

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

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

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

这很好,有几个原因 - 一个,不需要特殊标记(所以你知道它总是一致的) - 两个,无论 else 你使用这个数据,您将可以访问“未选择”输出。

答案 2 :(得分:0)

您正在尝试在绑定过程之前选择项目。捕获绑定事件并在此处设置de selected value。