我已经将一个DropDownList控件添加到了DetailsView,我试图让它绑定到我的更新/插入方法的“State”参数。
<InsertItemTemplate>
<asp:DropDownList ID="States" runat="server" SelectedValue='<%# Bind("State") %>'>
<asp:ListItem Value="NY">New York</asp:ListItem>
....
</asp:DropDownList>
</InsertItemTemplate>
我已经使用50个状态填充DropDownList,因此它们不绑定到任何表并且是静态项。我只是希望能够在编辑时选择一个状态,当我点击编辑时,它应该运行存储过程进行编辑,并将DropDownList的值作为@State的参数。
不幸的是,我收到了这个错误:
'States' has a SelectedValue which is invalid because it does not exist in the
list of items.
Parameter name: value
我研究了这个问题,但有些帖子建议使用“Eval”而不是“Bind”或添加一些空值,但这并没有解决我的问题。你们对我如何摆脱这个错误有任何想法/建议吗?
答案 0 :(得分:2)
如果ListItems是静态的(即在标记中定义),我相信你也应该发布它们。 请记住ListItems的正确语法是
<asp:ListItem Value="value" Text="displayText"></asp:ListItem>
答案 1 :(得分:0)
如果数据库中的表中的某些值与listitem值不匹配,则会出现此错误。请检查表条目
答案 2 :(得分:0)
将其绑定到项目模板值,例如
<ItemTemplate>
<asp:Label ID="lbl1" runat="server" Text='<%# Bind("State") %>'></asp:Label>
</ItemTemplate>
然后你可以:
InsertItemTemplate>
<asp:DropDownList ID="States" runat="server" SelectedValue='<%# Bind("State") %>'>
<asp:ListItem Value="NY">New York</asp:ListItem>
....
</asp:DropDownList>
</InsertItemTemplate>