我在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,它是无效的,因为它在项目列表中不存在。参数名称:值
不确定如何解决这个问题。当我进行绑定时,如果该值不在数据源中,我希望将其默认为“请选择”
答案 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。